/*
* JEF - Copyright 2009-2010 Jiyi (mr.jiyi@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.geequery.codegen.util;
import java.io.File;
import java.io.IOException;
import com.github.geequery.codegen.ast.IClass;
import com.github.geequery.codegen.ast.IClassUtil;
import jef.common.wrapper.Holder;
import jef.tools.IOUtils;
import jef.tools.TextFileCallback;
import org.apache.commons.lang.ArrayUtils;
public class GenUtil {
//判断一个类是否具有 未修改 标签
public static boolean isModified(File java) throws IOException {
if (!java.getName().endsWith(".java")){
throw new IllegalArgumentException();
}
final Holder<Integer> result=new Holder<Integer>(-1);
IOUtils.processFile(java, new TextFileCallback(){
@Override
public File getTarget(File source) {
return null;
}
@Override
public String processLine(String line) {
if(line.trim().equals("@NotModified")){
result.set(0);
}else if(line.trim().startsWith("public class ")){
result.set(1);
}
return null;
}
@Override
protected boolean breakProcess() {
return result.get()!=-1;
}
});
return result.get()!=0;
}
public static IClass toWrappedType(String primitive){
int i=ArrayUtils.indexOf(IClass.PRIMITIVE_TYPES, primitive);
if(i<0)throw new IllegalArgumentException("The input type "+ primitive+" is not a primitive type!");
return IClassUtil.getIClass(IClass.WRAPPED_TYPES[i]);
}
public static boolean isMatchStart(String[] keywords, String str){
if(keywords.length==0)return true;
for(String s:keywords){
if(str.startsWith(s)){
return true;
}
}
return false;
}
public static boolean isMatchStart(String keyword,String[] strs){
for(String str:strs){
if(str.startsWith(keyword)){
return true;
}
}
return false;
}
}