// Path: src/main/java/com/ccnode/codegenerator/util/GenCodeUtil.java
// public class GenCodeUtil {
// 
//     private final static Logger LOGGER = LoggerWrapper.getLogger(GenCodeUtil.class);
// 
//     public static final String ONE_RETRACT = "    ";
//     public static final String TWO_RETRACT = "        ";
//     public static final String THREE_RETRACT = "            ";
//     public static final String FOUR_RETRACT = "                ";
//     public static String MYSQL_TYPE = StringUtils.EMPTY;
//     public static String PACKAGE_LINE = StringUtils.EMPTY;
// 
//     
//     public static List<String> grapOld(@NotNull List<String> oldList, 
//             @NotNull String startKeyWord, @NotNull String endKeyWord){
//         int startIndex = -1;
//         int endIndex= -1;
//         int i = 0;
//         for (String line : oldList) {
//             if(sqlContain(line,startKeyWord)){
//                 startIndex = i;
//             }
//             if(sqlContain(line,endKeyWord)){
//                 endIndex = i;
//             }
//             i ++;
//         }
//         if(startIndex == -1 || endIndex == -1){
//             return Lists.newArrayList();
//         }
//         return oldList.subList(startIndex, endIndex + 1);
//     }
// 
//     public static String getPojoPackage(@NotNull String fullPojoFilePath){
//         try{
//             List<String> strings = IOUtils.readLines(fullPojoFilePath);
//             for (String string : strings) {
//                 if(string.startsWith("package")){
//                     string = string.replace(";", "");
//                     string = string.replace(" ", "");
//                     string = string.replace("package", "");
//                     return string;
//                 }
//             }
//         }catch(Exception e){
//             return "ERROR_PACKAGE";
//         }
//         return StringUtils.EMPTY;
// 
//     }
// 
//     public static boolean sqlContain(List<String> lines, @NotNull String word) {
//         lines = PojoUtil.avoidEmptyList(lines);
//         for (String line : lines) {
//             if(sqlContain(line, word)){
//                 return true;
//             }
//         }
//         return false;
//     }
// 
//     public static String deducePackage(String daoFilePathString, String pojoPackage,String pojoPathString, String modulePathStr){
//         //get the path by
//         LOGGER.info("path:{}, pojoPackage:{}",daoFilePathString,pojoPackage);
//         Path realpojoPath = Paths.get(pojoPathString);
//         String[] split = pojoPackage.split("\\.");
//         int len = split.length;
//         Path sourcePath = realpojoPath;
//         while(len>=0){
//             sourcePath = sourcePath.getParent();
//             len--;
//         }
//         Path daoFilePath = Paths.get(daoFilePathString);
//         Path daoFolder = daoFilePath.getParent();
//         //shall combine two path
//         Path relativeToSouce = sourcePath.relativize(daoFolder);
//         String relate = relativeToSouce.toString();
//         if(!StringUtils.isEmpty(modulePathStr)) {
//             Path modulePath = Paths.get(modulePathStr);
//             String modulePathString = modulePath.toString();
//             relate = relate.substring(relate.indexOf(modulePathString) + modulePathString.length() + 1);
//         }
//         relate = relate.replace("\\", ".");
//         relate = relate.replace("/",".");
//         return relate;
//     }
// 
//     public static String pathToPackage(String path){
//         path = path.replace("/",".");
//         path = path.replace("\\",".");
//         if(path.startsWith("src.main.java.")){
//             path = path.replace("src.main.java.","");
//         }
//         if(path.startsWith("src.main.")){
//             path = path.replace("src.main.","");
//         }
//         if(path.startsWith("src.")){
//             path = path.replace("src.","");
//         }
//         if(path.startsWith(".")){
//             path = path.substring(1,path.length());
//         }
//         return path;
//     }
// 
// 
// 
//     public static boolean sqlContain(String sequence, @NotNull String word){
//         if(StringUtils.isBlank(sequence)){
//             return false;
//         }
//         return StringUtils.containsIgnoreCase(
//                     StringUtils.deleteWhitespace(sequence),
//                 StringUtils.deleteWhitespace(word));
//     }
// 
//     public static String getUnderScore(String value) {
//         if(value == null){
//             return StringUtils.EMPTY;
//         }
//         return CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, value);
//     }
// 
//     public static String getLowerCamel(String value){
//         return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL,value);
//     }
// 
//     public static void main(String[] args) {
// //        System.out.println(deducePackage("src/main/java/com/qunar/insurance","com.qunar.insurance.annotion"));
// //        System.out.println(deducePackage("src/com/java/com/qunar/insurance","com.com.com.annotion"));
// //        System.out.println(deducePackage("src/com/java/com/qunar/insurance","xxx.com.com.annotion"));
//     }
// 
// }


import com.ccnode.codegenerator.util.GenCodeUtil;
import org.junit.Assert;
import org.junit.Test;
import java.nio.file.Path;
import java.nio.file.Paths;
package com.ccnode.codegenerator.utils;



/**
 * Created by bruce.ge on 2016/11/27.
 */
public class GenCodeUtilTest {
    @Test
    public void test(){
// Path: src/main/java/com/ccnode/codegenerator/util/GenCodeUtil.java
// public class GenCodeUtil {
// 
//     private final static Logger LOGGER = LoggerWrapper.getLogger(GenCodeUtil.class);
// 
//     public static final String ONE_RETRACT = "    ";
//     public static final String TWO_RETRACT = "        ";
//     public static final String THREE_RETRACT = "            ";
//     public static final String FOUR_RETRACT = "                ";
//     public static String MYSQL_TYPE = StringUtils.EMPTY;
//     public static String PACKAGE_LINE = StringUtils.EMPTY;
// 
//     
//     public static List<String> grapOld(@NotNull List<String> oldList, 
//             @NotNull String startKeyWord, @NotNull String endKeyWord){
//         int startIndex = -1;
//         int endIndex= -1;
//         int i = 0;
//         for (String line : oldList) {
//             if(sqlContain(line,startKeyWord)){
//                 startIndex = i;
//             }
//             if(sqlContain(line,endKeyWord)){
//                 endIndex = i;
//             }
//             i ++;
//         }
//         if(startIndex == -1 || endIndex == -1){
//             return Lists.newArrayList();
//         }
//         return oldList.subList(startIndex, endIndex + 1);
//     }
// 
//     public static String getPojoPackage(@NotNull String fullPojoFilePath){
//         try{
//             List<String> strings = IOUtils.readLines(fullPojoFilePath);
//             for (String string : strings) {
//                 if(string.startsWith("package")){
//                     string = string.replace(";", "");
//                     string = string.replace(" ", "");
//                     string = string.replace("package", "");
//                     return string;
//                 }
//             }
//         }catch(Exception e){
//             return "ERROR_PACKAGE";
//         }
//         return StringUtils.EMPTY;
// 
//     }
// 
//     public static boolean sqlContain(List<String> lines, @NotNull String word) {
//         lines = PojoUtil.avoidEmptyList(lines);
//         for (String line : lines) {
//             if(sqlContain(line, word)){
//                 return true;
//             }
//         }
//         return false;
//     }
// 
//     public static String deducePackage(String daoFilePathString, String pojoPackage,String pojoPathString, String modulePathStr){
//         //get the path by
//         LOGGER.info("path:{}, pojoPackage:{}",daoFilePathString,pojoPackage);
//         Path realpojoPath = Paths.get(pojoPathString);
//         String[] split = pojoPackage.split("\\.");
//         int len = split.length;
//         Path sourcePath = realpojoPath;
//         while(len>=0){
//             sourcePath = sourcePath.getParent();
//             len--;
//         }
//         Path daoFilePath = Paths.get(daoFilePathString);
//         Path daoFolder = daoFilePath.getParent();
//         //shall combine two path
//         Path relativeToSouce = sourcePath.relativize(daoFolder);
//         String relate = relativeToSouce.toString();
//         if(!StringUtils.isEmpty(modulePathStr)) {
//             Path modulePath = Paths.get(modulePathStr);
//             String modulePathString = modulePath.toString();
//             relate = relate.substring(relate.indexOf(modulePathString) + modulePathString.length() + 1);
//         }
//         relate = relate.replace("\\", ".");
//         relate = relate.replace("/",".");
//         return relate;
//     }
// 
//     public static String pathToPackage(String path){
//         path = path.replace("/",".");
//         path = path.replace("\\",".");
//         if(path.startsWith("src.main.java.")){
//             path = path.replace("src.main.java.","");
//         }
//         if(path.startsWith("src.main.")){
//             path = path.replace("src.main.","");
//         }
//         if(path.startsWith("src.")){
//             path = path.replace("src.","");
//         }
//         if(path.startsWith(".")){
//             path = path.substring(1,path.length());
//         }
//         return path;
//     }
// 
// 
// 
//     public static boolean sqlContain(String sequence, @NotNull String word){
//         if(StringUtils.isBlank(sequence)){
//             return false;
//         }
//         return StringUtils.containsIgnoreCase(
//                     StringUtils.deleteWhitespace(sequence),
//                 StringUtils.deleteWhitespace(word));
//     }
// 
//     public static String getUnderScore(String value) {
//         if(value == null){
//             return StringUtils.EMPTY;
//         }
//         return CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, value);
//     }
// 
//     public static String getLowerCamel(String value){
//         return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL,value);
//     }
// 
//     public static void main(String[] args) {
// //        System.out.println(deducePackage("src/main/java/com/qunar/insurance","com.qunar.insurance.annotion"));
// //        System.out.println(deducePackage("src/com/java/com/qunar/insurance","com.com.com.annotion"));
// //        System.out.println(deducePackage("src/com/java/com/qunar/insurance","xxx.com.com.annotion"));
//     }
// 
// }


// Path: src/test/java/com/ccnode/codegenerator/utils/GenCodeUtilTest.java
import com.ccnode.codegenerator.util.GenCodeUtil;
import org.junit.Assert;
import org.junit.Test;
import java.nio.file.Path;
import java.nio.file.Paths;

package com.ccnode.codegenerator.utils;



/**
 * Created by bruce.ge on 2016/11/27.
 */
public class GenCodeUtilTest {
    @Test
    public void test(){
        String packageStr = GenCodeUtil.deducePackage("down\\src\\main\\java\\com\\rest\\mapper","com.rest.domain","upworkattachment\\src\\main\\java\\com\\rest\\domain\\PeoplePO.java","down/src/main/java");