genesis2000 JAVA接口
闲着没事做照着澳宝的genesis.pl写了个JAVA的接口...
没怎么看JAVA的编写规范文档,可能会有部分规范问题。
在windows平台上测试过没问题。。
程序说明:
java不像python能够在方法定义时设置默认参数,
必须要重载来实现(现学现卖了属于是)
public void INFO(String command, String units) {String temp = "gen_java_" + Long.toString(pid);String tempFile = tmpDir + "/" + temp;String args = "info,out_file=" + tempFile + "," + units + ",args=" + command;COM(args);PARSE(tempFile);}public void INFO(String command) {INFO(command, "units=inch");}
INFO的解析用了hashmap,类似于python的字典,perl的hash。
public HashMap<String, String[]> infoMap;
全部代码如下:
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;public class Genesis {public String job;public String step;public String STATUS;public String READANS;public String PAUSANS;public String MOUSEANS;public String COMANS;public HashMap<String, String[]> infoMap;private String currentOs; private String tmpDir; private String prefix; private long pid;private Scanner sc = new Scanner(System.in);public Genesis() {job = System.getenv("JOB");step = System.getenv("STEP");prefix = "@%#%@";tmpDir = System.getenv("GENESIS_TMP");if (tmpDir == "") {tmpDir = "/tmp";}Properties props=System.getProperties(); currentOs = props.getProperty("os.name");pid = ProcessHandle.current().pid();initValue();}private void initValue() {STATUS = "";READANS = "";COMANS = "";PAUSANS = "";MOUSEANS = "";}private String getReply(){return sc.nextLine();} private void sendCommand(String commandType, String command) {initValue();String connector = "";if (command == "") {connector = "";} else {connector = " ";}System.out.println(prefix + commandType + connector + command);System.out.flush();}public void COM(String command) {initValue();sendCommand("COM", command); STATUS = getReply();READANS = getReply();COMANS = READANS;}public void AUX(String command) {initValue();sendCommand("AUX", command); STATUS = getReply();READANS = getReply();COMANS = READANS;}public void VON(String command) {initValue();sendCommand("VON", command); }public void VOF(String command) {initValue();sendCommand("VOF", command); } public void SU_ON(String command) {initValue();sendCommand("SU_ON", command); } public void SU_OFF(String command) {initValue();sendCommand("SU_OFF", command); } public void MOUSE(String command) {initValue();sendCommand("MOUSE", command); STATUS = getReply();READANS = getReply();MOUSEANS = getReply();} public void PAUSE(String command) {initValue();sendCommand("PAUSE", command); STATUS = getReply();READANS = getReply();PAUSANS = getReply();}public void INFO(String command, String units) {String temp = "gen_java_" + Long.toString(pid);String tempFile = tmpDir + "/" + temp;String args = "info,out_file=" + tempFile + "," + units + ",args=" + command;COM(args);PARSE(tempFile);}public void INFO(String command) {INFO(command, "units=inch");}private void PARSE(String tempFile) {infoMap = new HashMap<String, String[]>();File file = new File(tempFile);if (file.isFile() && file.exists()) {try {FileInputStream fileInputStream = new FileInputStream(file);InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String line = null;String pattern = "^set\s+(\\S+)\s+=\s+(.*)";Pattern regExp = Pattern.compile(pattern);while((line = bufferedReader.readLine()) != null){Matcher m = regExp.matcher(line);if (m.find()) {String key = m.group(1);String value = m.group(2);String subPattern = "^\\(";Pattern subRegExp = Pattern.compile(subPattern);Matcher subM = subRegExp.matcher(value);List<String> list = new ArrayList<>(); if (subM.find()) {value = value.replaceAll("[\\(\\)]", "");String[] rawArr = value.split("\\s+"); for (String s:rawArr) {s = s.replaceAll("(^')|('$)", "");if (s.length() == 0) {list.add("NULL");} else {list.add(s);}}} else {value = value.replaceAll("(^')|('$)", "");if (value.length() == 0) {list.add("NULL");} else {list.add(value);} }String[] newArr = list.toArray(new String[list.size()]);infoMap.put(key, newArr); }}} catch (Exception e) {System.exit(0);}}}
}
附上我的测试文档
import java.util.*;public class Main {public static Set<String> setKey;public static void main(String[] args) {Genesis g = new Genesis(); g.INFO("-t layer -e mytest/31/31 -d ATTR");setKey = g.infoMap.keySet(); for(String key : setKey) {System.out.println(key);String[] arr = g.infoMap.get(key);for (String s:arr) {System.out.println(s);}} g.INFO("-t layer -e mytest/31/31 -d CONTEXT"); String[] arr = g.infoMap.get("gCONTEXT");for (String s:arr) {System.out.println(s);}g.COM("sel_single_feat,operation=select,x=2.10824,y=-3.0064775,tol=40.91,cyclic=no");g.COM("get_select_count");g.PAUSE("count : " + g.COMANS);}
}
JAVA的话需要先用javac编译成class文件,再执行,
另外需要更改澳宝的scr_start.csh文档,让genesis能够自动识别。
我的电脑环境有问题,所以手动set了一下java的执行程序
else if ("$_EXT" =~ [Cc][Ll][Aa][Ss][Ss]) thenset JPATH = `echo $PROG:h`set JPROG = `echo $PROG:t`set JCLASS = `echo $JPROG:r`set java = "C:\Program Files\Java\jdk-16.0.2\bin\java.exe"setenv CLASSPATH $JPATHecho "Set CLASSPATH to: $CLASSPATH"echo "Executing JavaClass $JCLASS $argv""$java" $JCLASS $argvset PROG_STATUS=$status
genesis2000 JAVA接口相关推荐
- Java接口对Hadoop集群的操作
Java接口对Hadoop集群的操作 首先要有一个配置好的Hadoop集群 这里是我在SSM框架搭建的项目的测试类中实现的 一.windows下配置环境变量 下载文件并解压到C盘或者其他目录. 链接: ...
- 推荐一个 Java 接口快速开发框架
欢迎关注方志朋的博客,回复"666"获面试宝典 今天给小伙伴们介绍一个Java接口快速开发框架-magic-api 简介 magic-api 是一个基于 Java 的接口快速开发框 ...
- java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?
java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).那么我们在Java接口中怎 ...
- Java接口和Java抽象类
Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...
- java接口深入理解,深入理解Java接口
从java接口是什么到为什么,理解java接口,主要解决三个问题 1.java接口是什么 2.java接口为什么 3.java接口怎么用 java接口是什么 接口是方法的抽象,通过接口规定类需要实现那 ...
- java安全接口调用_步骤3:调用Java接口
本文档主要介绍了通过调用Java接口生成工作密钥和进行通用数据加解密的操作方法. 整体流程 初始化SDK.具体内容请参见 配置Java接口.具体内容请参见 初始化SDK 使用以下方法初始化SDK.hs ...
- 对接第三方平台JAVA接口问题推送和解决
对接第三方平台JAVA接口问题推送和解决 参考文章: (1)对接第三方平台JAVA接口问题推送和解决 (2)https://www.cnblogs.com/CreateMyself/p/7295879 ...
- java 接口与抽象类的区别
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
- Java接口interface
Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...
最新文章
- jpeg6 安装问题!
- 【终极办法】Client does not support authentication protocol requested by server; consider upgrading mysql
- openwrt dhcp 无法获取ip_电脑的 ip 是怎么来的呢?我又没有配置过
- Django基础-安装配置
- 输入mysql -v_Mysql数据库使用笔记
- 再讨论下webdriver
- everything html修改,在HTML 5视频标签上更改源
- redis基础知识——菜鸟教程
- 直播无线领夹式麦克风
- 手机长度px值_px和厘米怎么换算?
- Win10耳机插入电脑无声音问题的解决方案
- 如果北京的房价下跌,到底能跌多少?
- 爱立信发布人体通信技术:最高传输10Mbps
- 存储过程的定义和用法
- 反射及在运用过程中出现的IllegalAccessException异常
- 显卡mx150和230哪个好_MX150和GTX1050哪个好?MX150与GTX1050性能天梯图对比
- 移动端 - APP测试要点
- oca考试及ocp考试指南
- 【散文】一场白露,怎知秋心
- PHP在linux下读取word