import net.sf.json.JSONObject; //导入方法依赖的package包/类
@Override
public boolean process(AGContext context, JSONObject env, JavaFileObject javaFileObject, TypeDefineCodeBlock typeDefineCodeBlock, Set extends BaseStatement> set) {
if (typeDefineCodeBlock.getAnnotation(IPCInvokeTaskManager.class.getSimpleName()) == null) {
Log.i(TAG, "the TypeDefineCodeBlock do not contains 'IPCInvokeTaskManager' annotation.(%s)", javaFileObject.getFileName());
return false;
}
if (set.isEmpty()) {
Log.i(TAG, "containsSpecialAnnotationStatements is nil");
return false;
}
final String outputDir = env.optString(EnvArgsConstants.KEY_OUTPUT_DIR);
final String pkg = env.optString(EnvArgsConstants.KEY_PACKAGE);
final String filePath = env.optString(EnvArgsConstants.KEY_FILE_PATH);
if (Util.isNullOrNil(outputDir)) {
Log.i(TAG, "process failed, outputDir is null or nil.(filePath : %s)", filePath);
return false;
}
JavaFileObject fObject = new JavaFileObject();
fObject.addTypeDefineCodeBlock(createTypeDefineCodeBlock(typeDefineCodeBlock, set));
fObject.setPackageStatement(javaFileObject.getPackageStatement());
fObject.copyImports(javaFileObject);
fObject.attachEnvironmentArgs(javaFileObject.getEnvironmentArgs());
GenCodeTaskInfo taskInfo = new GenCodeTaskInfo();
taskInfo.FileName = fObject.getFileName();
taskInfo.RootDir = Util.joint(File.separator, outputDir, Util.exchangeToPath(pkg));
taskInfo.javaFileObject = fObject;
CustomizeGenerator generator = new CodeGenerator(fObject);
FileOperation.saveToFile(taskInfo, generator.genCode());
Log.i(TAG, "genCode rootDir : %s, fileName : %s, suffix : %s", taskInfo.RootDir, taskInfo.FileName, taskInfo.Suffix);
return true;
}