/*
 writer : KYJ
 write-date : 18.03.31
 description :
	.java 소스파일의 메소드 목록을 출력한다.
 mode : default		
*/


var GargoyleJavaParser = Packages.com.kyj.fx.voeditor.visual.framework.parser.GargoyleJavaParser;
var MethodVisitor = Packages.com.kyj.fx.voeditor.visual.framework.parser.MethodVisitor;
var FileUtil = Packages.com.kyj.fx.voeditor.visual.util.FileUtil;
var StringBuffer = Packages.java.lang.StringBuffer;
var f = createTempFile();
FileUtil.writeFile(f, testCode());

var unit = GargoyleJavaParser.getCompileUnit(f);





var action = function(m) { 

var reduce = m.getParameters().stream()
	    .map(function(a){ return a.type.toString(); })
	    .reduce( function(a,b){  return a.concat(" ").concat(b); } );

var params = "";
if(reduce.isPresent())
{
  params = reduce.get();
}

print(m.name + " ( " + params + " )" );

};

unit.accept(  new MethodVisitor(action), null );




/*Create Temp File*/
function createTempFile(){
var env = Packages.java.lang.System.getProperties();
var parentPath = env.getProperty("java.io.tmpdir", "");
var f = new Packages.java.io.File(parentPath,com.kyj.fx.voeditor.visual.util.IdGenUtil.generate()+".java");
f.createNewFile();
return f;
}

/*Return Temp Code*/
function testCode(){
var sb = new StringBuffer();
sb.append("/********************************\n");
sb.append(" *	프로젝트 : VisualFxVoEditor\n");
sb.append(" *	패키지   : com.kyj.fx.voeditor.visual.framework\n");
sb.append(" *	작성일   : 2016. 12. 5.\n");
sb.append(" *	작성자   : KYJ\n");
sb.append(" *******************************/\n");
sb.append("package com.kyj.fx.voeditor.visual.framework;\n");
sb.append("\n");
sb.append("import com.kyj.fx.voeditor.visual.util.ValueUtil;\n");
sb.append("\n");
sb.append("/**\n");
sb.append(" * @author KYJ\n");
sb.append(" *\n");
sb.append(" */\n");
sb.append("public class URLModel {\n");
sb.append("\n");
sb.append("	private String title;\n");
sb.append("\n");
sb.append("	private String url;\n");
sb.append("\n");
sb.append("	private String content;\n");
sb.append("\n");
sb.append("	public URLModel() {\n");
sb.append("		super();\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	public static URLModel empty() {\n");
sb.append("		return new URLModel();\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	public URLModel(String url, String content) {\n");
sb.append("		super();\n");
sb.append("		this.url = url;\n");
sb.append("		this.content = content;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	public boolean isEmpty() {\n");
sb.append("		return ValueUtil.isEmpty(url) && ValueUtil.isEmpty(content);\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	/**\n");
sb.append("	 * @return the url\n");
sb.append("	 */\n");
sb.append("	public final String getUrl() {\n");
sb.append("		return url;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	/**\n");
sb.append("	 * @return the content\n");
sb.append("	 */\n");
sb.append("	public final String getContent() {\n");
sb.append("		return content;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	/**\n");
sb.append("	 * @param url the url to set\n");
sb.append("	 */\n");
sb.append("	public final void setUrl(String url) {\n");
sb.append("		this.url = url;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	/**\n");
sb.append("	 * @param content the content to set\n");
sb.append("	 */\n");
sb.append("	public final void setContent(String content) {\n");
sb.append("		this.content = content;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	/**\n");
sb.append("	 * @return the title\n");
sb.append("	 */\n");
sb.append("	public final String getTitle() {\n");
sb.append("		return title;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	/**\n");
sb.append("	 * @param title the title to set\n");
sb.append("	 */\n");
sb.append("	public final void setTitle(String title) {\n");
sb.append("		this.title = title;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("	/* (non-Javadoc)\n");
sb.append("	 * @see java.lang.Object#toString()\n");
sb.append("	 */\n");
sb.append("	@Override\n");
sb.append("	public String toString() {\n");
sb.append("		return title;\n");
sb.append("	}\n");
sb.append("\n");
sb.append("}\n");
return sb.toString();
}