Package data

Source Code of data.SasIom

package data;

import com.sas.iom.SAS.ILanguageService;
import com.sas.iom.SAS.ILanguageServicePackage.CarriageControlSeqHolder;
import com.sas.iom.SAS.ILanguageServicePackage.LineTypeSeqHolder;
import com.sas.iom.SAS.IWorkspace;
import com.sas.iom.SAS.IWorkspaceHelper;
import com.sas.iom.SASIOMDefs.StringSeqHolder;
import com.sas.services.connection.*;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

/**
*/
public class SasIom {

    String procedure = "LIBNAME EDA ORACLE  PATH=XE  SCHEMA=EDA  USER=eda  PASSWORD=eda;" +
                       "DATA WAT;" +
                       "    SET EDA.WAT;" +
                       "    KEEP PRODUCT_NAME SPEC_FILE LOT_ID WAFER_ID SITE_ID ATT1 ATT2 ATT3;" +
                       "    WHERE LOT_ID like 'P0M78.1';" +
                       "RUN;" +
                       "DATA _NULL_;" +
                       "    file print PS=32767;" +
                       "    set WAT end=lastrec;" +
                       "    if _N_ eq 1 then do;" +
                       "        put '[';" +
                       "    end;" +
                       "    put '{\"productName\":\"' PRODUCT_NAME '\",';" +
                       "    put '\"lotId\":\"' LOT_ID '\",';" +
                       "    put '\"waferId\":' WAFER_ID ',';" +
                       "    put '\"siteId\":\"' SITE_ID '\",';" +
                       "    put '\"specFile\":\"' SPEC_FILE '\",';" +
                       "    put '\"attrs\": [';" +
                       "    put '{\"attr1\":' ATT1 '},';" +
                       "    put '{\"attr2\":' ATT2 '},';" +
                       "    put '{\"attr3\":' ATT3 '}]}';" +
                       "    if lastrec eq 1 then do;" +
                       "        put ']';" +
                       "    end;" +
                       "    else do;" +
                       "        put ',';" +
                       "    end;" +
                       "RUN;";

    public SasIom() throws Exception {
        loadScript("C:\\Projects\\Testing\\SasJdbc\\script\\Fetch_MKPs.sas");
        procedure = procedure.replaceAll("&QRY_START_DT", "01APR2011").replaceAll("&QRY_END_DT", "31MAY2011");
        //System.out.println(procedure);
        runProcedure();
    }

    public void loadScript(String fileName) throws Exception {
        BufferedReader reader = new BufferedReader(new FileReader(new File(fileName)));
        StringBuilder procedureBuilder = new StringBuilder();
        String line = reader.readLine();
        while(line != null) {
            procedureBuilder.append(line);
            line = reader.readLine();
        }
        procedure = procedureBuilder.toString();
    }

    public void runProcedure() throws Exception {
        String classID = Server.CLSID_SAS;
        String host = "172.17.64.177"; //"localhost";
        int port = 8591;
        String userName = "sasdemo"; //"twncwc";
        String password = "Aa123456"; //"kKk123";

        Server server = new BridgeServer(classID, host, port);
        ConnectionFactoryConfiguration cxfConfig =
                new ManualConnectionFactoryConfiguration(server);

        ConnectionFactoryManager cxfManager =
                new ConnectionFactoryManager();

        ConnectionFactoryInterface cxf = cxfManager.getFactory(cxfConfig);
        ConnectionInterface cx = cxf.getConnection(userName, password);
        IWorkspace iWorkspace = IWorkspaceHelper.narrow(cx.getObject());
        ILanguageService sasLanguage = iWorkspace.LanguageService();

        sasLanguage.Submit(procedure);

        CarriageControlSeqHolder logCarriageControlHldr = new CarriageControlSeqHolder();
        LineTypeSeqHolder logLineTypeHldr = new LineTypeSeqHolder();
        StringSeqHolder logHldr = new StringSeqHolder();
        sasLanguage.FlushLogLines(Integer.MAX_VALUE, logCarriageControlHldr, logLineTypeHldr, logHldr);
        System.out.println("==> Log <==");
        for (String line: logHldr.value) {
            System.out.println(line);
        }

        CarriageControlSeqHolder holder = new CarriageControlSeqHolder();
        LineTypeSeqHolder listLineTypeHldr = new LineTypeSeqHolder();
        StringSeqHolder listHldr = new StringSeqHolder();
        sasLanguage.FlushListLines(Integer.MAX_VALUE, holder, listLineTypeHldr, listHldr);
       
        System.out.println("==> OUT <==");
        /*
        for (CarriageControl control: holder.value) {
            System.out.println("control -> [" + control.getClass() + ":" + control.value() + "] " + control.toString());
        }
        for (LineType type: listLineTypeHldr.value) {
            System.out.println("type -> [" + type.getClass() + ":" + type.value() + "]" + type.toString());
        }
        */
        for (String line: listHldr.value) {
            System.out.println(line);
        }

        iWorkspace.Close();
        cx.close();
    }

    public static void main(String[] args) {
        try {
            new SasIom();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
TOP

Related Classes of data.SasIom

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.