闲着没事做照着澳宝的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接口相关推荐

  1. Java接口对Hadoop集群的操作

    Java接口对Hadoop集群的操作 首先要有一个配置好的Hadoop集群 这里是我在SSM框架搭建的项目的测试类中实现的 一.windows下配置环境变量 下载文件并解压到C盘或者其他目录. 链接: ...

  2. 推荐一个 Java 接口快速开发框架

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天给小伙伴们介绍一个Java接口快速开发框架-magic-api 简介 magic-api 是一个基于 Java 的接口快速开发框 ...

  3. java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?

    java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).那么我们在Java接口中怎 ...

  4. Java接口和Java抽象类

    Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...

  5. java接口深入理解,深入理解Java接口

    从java接口是什么到为什么,理解java接口,主要解决三个问题 1.java接口是什么 2.java接口为什么 3.java接口怎么用 java接口是什么 接口是方法的抽象,通过接口规定类需要实现那 ...

  6. java安全接口调用_步骤3:调用Java接口

    本文档主要介绍了通过调用Java接口生成工作密钥和进行通用数据加解密的操作方法. 整体流程 初始化SDK.具体内容请参见 配置Java接口.具体内容请参见 初始化SDK 使用以下方法初始化SDK.hs ...

  7. 对接第三方平台JAVA接口问题推送和解决

    对接第三方平台JAVA接口问题推送和解决 参考文章: (1)对接第三方平台JAVA接口问题推送和解决 (2)https://www.cnblogs.com/CreateMyself/p/7295879 ...

  8. java 接口与抽象类的区别

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  9. Java接口interface

    Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...

最新文章

  1. jpeg6 安装问题!
  2. 【终极办法】Client does not support authentication protocol requested by server; consider upgrading mysql
  3. openwrt dhcp 无法获取ip_电脑的 ip 是怎么来的呢?我又没有配置过
  4. Django基础-安装配置
  5. 输入mysql -v_Mysql数据库使用笔记
  6. 再讨论下webdriver
  7. everything html修改,在HTML 5视频标签上更改源
  8. redis基础知识——菜鸟教程
  9. 直播无线领夹式麦克风
  10. 手机长度px值_px和厘米怎么换算?
  11. Win10耳机插入电脑无声音问题的解决方案
  12. 如果北京的房价下跌,到底能跌多少?
  13. 爱立信发布人体通信技术:最高传输10Mbps
  14. 存储过程的定义和用法
  15. 反射及在运用过程中出现的IllegalAccessException异常
  16. 显卡mx150和230哪个好_MX150和GTX1050哪个好?MX150与GTX1050性能天梯图对比
  17. 移动端 - APP测试要点
  18. oca考试及ocp考试指南
  19. 【散文】一场白露,怎知秋心
  20. PHP在linux下读取word

热门文章

  1. bat 清理指定目录下的空文件夹
  2. SAP那些事-职业篇-19-论ERP实施效果的评估
  3. Kinect V2 + PCL 实现地方体目标的体积测量(附代码)
  4. 为某女性门户网站做整体策划推广方案
  5. 浅析门户网站体育赛事CDN加速解决方案
  6. 使用 HDFS 协议访问对象存储服务
  7. 上海成立司法行政大数据实验室
  8. 2020年PHP面试题
  9. 基于Android的大学校友管理系统
  10. 嵌入式linux can设备名,嵌入式Linux下CAN接口调试