wu
2024-12-31 1edefcae08fe7c8df6a177e5dbbc8ab8f8194187
nglib/src/Optimize/OptimizeTag.java
New file
@@ -0,0 +1,204 @@
package Optimize;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.UUID;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import ng.db.*;
 public  class OptimizeTag  implements Runnable {
 private   String id;
 private     com.jacob.activeX.ActiveXComponent com;
 private    com.jacob.com.Dispatch dispatch;
 private   int running;
 private   java.util.Date date,lastdate;
 private   OptimizationInput input;
 private   java.lang.Thread thread;
 public     String flag;
 public     Object Token;
 private   static  Semaphore sem;
 private    Dictionary<String,Object> dic=new  Hashtable<String,Object>();
 public Object getProperty(String s){
    synchronized(dic){
       return dic.get(s);
    }
 }
 public void setProperty(String s,Object obj){
    synchronized(dic){
       dic.put(s,obj);
    }
 }
 public OptimizationInput  getInput(){
    return input;
 }
 public JSONObject infoToJson() throws JSONException{
    JSONObject obj=new JSONObject();
    obj.put("id", id);
    String s="free";
    if(running==1){
       s="running";
    }
    if(running==2){
       s="complated";
    }
    obj.put("state", s);
    obj.put("createTime",NGFunction.dateFormat("yyyy-MM-dd HH:mm:ss", date));
    obj.put("lastTime",NGFunction.dateFormat("yyyy-MM-dd HH:mm:ss",this.lastdate));
    s="";
    OptimizationInput in=this.input;
    if(in!=null){
       s=in.GongCheng;
    }
    obj.put("lastGongCheng", s);
    return obj;
 }
  boolean getExe(){
    try {
         if(sem.tryAcquire(0, TimeUnit.MILLISECONDS)){
            return true;
          }
         return false;
      } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
         return false;
      }
 }
 public boolean BeginOptimize(OptimizationInput input){
      if(sem==null){
         sem=new Semaphore(1);
      }
      if(running==0 || running==2){
         if(getExe()){
         running=1;
         this.input=input;
         thread=new Thread(this);
         thread.start();
         return true;
         }
      }
     return false;
   }
   public String saveOpt(String Gongcheng, String BtContent, String type, String path){
       this.lastdate=new java.util.Date();
        return Dispatch.call(this.dispatch,"saveOpt",Gongcheng,BtContent,type,path).toString();
   }
   public Object[] getResultByBT(String Gongcheng, String BtContent){
      String s= Dispatch.call(this.dispatch, "btToResult",Gongcheng,BtContent).toString();
        try {
         JSONArray obj=new JSONArray(s);
          JSONObject   ob=obj.getJSONObject(1);
          OptimizationResult a=new OptimizationResult(ob);
          JSONObject b=obj.getJSONObject(0);
          JSONArray ar=new JSONArray();
          Object[] ret=new Object[2];
          ret[0]=b;
          ret[1]=a;
          return ret;
      } catch (JSONException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
        return null;
   }
   public static OptimizeTag create(){
      ActiveXComponent dotnetCom = new ActiveXComponent("CLSID:97D686F9-F577-4E41-B5BF-CB8CC5BC73CB");
      Dispatch myCom = (Dispatch) dotnetCom.getObject();
      OptimizeTag tag=new OptimizeTag();
      tag.id=null;
      tag.com=dotnetCom;
      tag.dispatch=myCom;
      tag.date=new java.util.Date();
       tag.lastdate=new java.util.Date();
      return tag;
   }
   public static OptimizeTag create(String id){
      ActiveXComponent dotnetCom = new ActiveXComponent("CLSID:97D686F9-F577-4E41-B5BF-CB8CC5BC73CB");
      Dispatch myCom = (Dispatch) dotnetCom.getObject();
      OptimizeTag tag=new OptimizeTag();
      tag.id=id;
      tag.com=dotnetCom;
      tag.dispatch=myCom;
      tag.date=new java.util.Date();
      tag.lastdate=new java.util.Date();
      return tag;
   }
   public OptimizationState getState() throws JSONException{
       this.lastdate=new java.util.Date();
        String s=  Dispatch.call(this.dispatch,"getState").toString();
        if("null".equals(s))
           return null;
        JSONObject obj=new JSONObject(s);
        OptimizationState r=new  OptimizationState(obj);
        if(this.running==1){
           r.State="busy";
        }
        return r;
   }
   public OptimizationResult getResult() throws JSONException{
       this.lastdate=new java.util.Date();
      if(running!=2)
         return null;
       String s=  Dispatch.call(this.dispatch,"getResult").toString();
         if("null".equals(s))
              return null;
        JSONObject obj=new JSONObject(s);
        return new OptimizationResult(obj);
   }
   public String getId(){
      return this.id;
   }
   @Override
   public void run() {
       this.lastdate=new java.util.Date();
      this.running=1;
      // TODO Auto-generated method stub
     String s;
   try {
      Dispatch.call(this.dispatch,"Optima",this.input.toJson().toString()).toString();
   } catch (JSONException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   }
       sem.release();
      this.running=2;
      this.thread=null;
   }
}