Example usage for org.apache.commons.lang.builder ToStringStyle MULTI_LINE_STYLE

List of usage examples for org.apache.commons.lang.builder ToStringStyle MULTI_LINE_STYLE

Introduction

In this page you can find the example usage for org.apache.commons.lang.builder ToStringStyle MULTI_LINE_STYLE.

Prototype

ToStringStyle MULTI_LINE_STYLE

To view the source code for org.apache.commons.lang.builder ToStringStyle MULTI_LINE_STYLE.

Click Source Link

Document

The multi line toString style.

Usage

From source file:edu.harvard.iq.dvn.ingest.dsb.impl.DvnRGraphServiceImpl.java

/** *************************************************************
 * initialize the RServe connection and load the graph;
 * keep the open connection.//  w w  w.j  av a2  s .  c o m
 *
 * @param sro    a DvnRJobRequest object that contains various parameters
 * @return    a Map that contains various information about the results
 */

public Map<String, String> initializeConnection(DvnRJobRequest sro) throws DvnRGraphException {

    // set the return object
    Map<String, String> result = new HashMap<String, String>();

    try {

        if (sro != null) {
            dbgLog.fine(
                    "sro dump:\n" + ToStringBuilder.reflectionToString(sro, ToStringStyle.MULTI_LINE_STYLE));
        } else {
            throw new DvnRGraphException("init: NULL R JOB OBJECT");
        }

        String SavedRworkSpace = null;
        String CachedRworkSpace = sro.getCachedRworkSpace();

        Map<String, Object> SubsetParameters = sro.getParametersForGraphSubset();

        if (SubsetParameters != null) {
            SavedRworkSpace = (String) SubsetParameters.get(SAVED_RWORK_SPACE);
        }

        if (SavedRworkSpace != null) {
            myConnection = RConnectionPool.securePooledConnection(SavedRworkSpace, null, true, 0);
            RDataFileName = SavedRworkSpace;

        } else if (CachedRworkSpace != null) {
            myConnection = RConnectionPool.securePooledConnection(RDataFileName, CachedRworkSpace, false, 0);
        } else {
            throw new DvnRGraphException("Initialize method called without either local or remote RData file");
        }

        if (myConnection == 0) {
            throw new DvnRGraphException("failed to obtain an R connection");
        } else {
            DvnRConnection drc = RConnectionPool.getConnection(myConnection);
            if (drc == null) {
                throw new DvnRGraphException("failed to obtain an R connection");
            } else {
                // set the connection time stamp: 
                Date now = new Date();
                drc.setLastQueryTime(now.getTime());
                drc.unlockConnection();
            }
        }

        dbgLog.info("Initialize: obtained connection " + myConnection);

        result.put(SAVED_RWORK_SPACE, RDataFileName);

        result.put("dsbHost", RSERVE_HOST);
        result.put("dsbPort", DSB_HOST_PORT);
        result.put("IdSuffix", IdSuffix);
    } catch (DvnRGraphException dre) {
        throw dre;
    }

    return result;

}

From source file:com.gemini.provision.security.openstack.SecurityProviderOpenStackImpl.java

@Override
public List<GeminiSecurityGroupRule> listSecurityGroupRules(GeminiTenant tenant, GeminiEnvironment env,
        GeminiSecurityGroup securityGroup) {
    List<GeminiSecurityGroupRule> listSecGrpRules = Collections.synchronizedList(new ArrayList());

    //authenticate the session with the OpenStack installation
    OSClient os = OSFactory.builder().endpoint(env.getEndPoint())
            .credentials(env.getAdminUserName(), env.getAdminPassword()).tenantName(tenant.getName())
            .authenticate();//from   w  w  w  .  j  a va  2s  . c  o  m
    if (os == null) {
        Logger.error("Failed to authenticate Tenant: {}",
                ToStringBuilder.reflectionToString(tenant, ToStringStyle.MULTI_LINE_STYLE));
        return null;
    }

    List<? extends SecurityGroupRule> osSecGrpRules = null;
    try {
        osSecGrpRules = os.networking().securityrule().list();
    } catch (NullPointerException | ClientResponseException ex) {
        Logger.error("Failed to get rules for tenant: {} env: {} and security Group {}", tenant.getName(),
                env.getName(), securityGroup.getName());
        return null;
    }

    osSecGrpRules.stream().filter(osSecGrpRule -> osSecGrpRule != null).forEach(osSecGrpRule -> {
        //find the rule in the security group object and add it to list
        GeminiSecurityGroupRule gemSecGrpRule = null;
        try {
            gemSecGrpRule = securityGroup.getSecurityRules().stream()
                    .filter(sr -> sr.getCloudID().equals(osSecGrpRule.getId())) //check cloud id too to ensure the mapping on Gemini is complete
                    .findFirst().get();
        } catch (NoSuchElementException ex) {
            //not an error or even log worthy ... just signifies that the rule
            //on Gemini Side needs to be created
        }
        if (gemSecGrpRule == null) {
            //the rule has not been mapped on the Gemini side, so create it
            gemSecGrpRule = new GeminiSecurityGroupRule();
            gemSecGrpRule.setCloudID(osSecGrpRule.getId());
            gemSecGrpRule.setProvisioned(true);
            gemSecGrpRule.setPortRangeMin(osSecGrpRule.getPortRangeMin());
            gemSecGrpRule.setPortRangeMax(osSecGrpRule.getPortRangeMax());
            gemSecGrpRule.setProtocol(Protocol.fromString(osSecGrpRule.getProtocol()));
            //                gemSecGrpRule.setCidr(osSecGrpRule.getRange().getCidr());
            gemSecGrpRule.setDirection(
                    GeminiSecurityGroupRuleDirection.valueOf(osSecGrpRule.getDirection().toUpperCase()));
            gemSecGrpRule.setRemoteGroupId(osSecGrpRule.getRemoteGroupId());
            gemSecGrpRule.setRemoteIpPrefix(osSecGrpRule.getRemoteIpPrefix());
            gemSecGrpRule.setIpAddressType(IPAddressType.valueOf(osSecGrpRule.getEtherType()));
            gemSecGrpRule.setParent(securityGroup);
            securityGroup.addSecurityRule(gemSecGrpRule);
        }
        listSecGrpRules.add(gemSecGrpRule);
    });

    Logger.debug("Successfully retrieved security groups rules Tenant: {} Env: {} security group {}",
            tenant.getName(), env.getName(), securityGroup.getName());
    return listSecGrpRules;
}

From source file:com.gemini.provision.network.openstack.NetworkProviderOpenStackImpl.java

@Override
public ProvisioningProviderResponseType createNetwork(GeminiTenant tenant, GeminiEnvironment env,
        GeminiNetwork newNetwork) {//ww w. j ava  2 s  .  c o m
    //authenticate the session with the OpenStack installation
    OSClient os = OSFactory.builder().endpoint(env.getEndPoint())
            .credentials(env.getAdminUserName(), env.getAdminPassword()).tenantName(tenant.getName())
            .authenticate();
    if (os == null) {
        Logger.error("Failed to authenticate Tenant: {}",
                ToStringBuilder.reflectionToString(tenant, ToStringStyle.MULTI_LINE_STYLE));
        return ProvisioningProviderResponseType.CLOUD_AUTH_FAILURE;
    }

    //check to see if this network exists
    List<? extends Network> networks = os.networking().network().list();
    if (networks.stream().anyMatch(n -> n.getName().equals(newNetwork.getName()))) {
        Logger.error("Failed to create network - already exists. Tenant: {} Environment: {} Network: {}",
                tenant.getName(), env.getName(),
                ToStringBuilder.reflectionToString(newNetwork, ToStringStyle.MULTI_LINE_STYLE));
        return ProvisioningProviderResponseType.OBJECT_EXISTS;
    }

    //create the network
    Network network;
    try {
        network = os.networking().network()
                .create(Builders.network().tenantId(tenant.getTenantID()).name(newNetwork.getName()).build());
    } catch (ClientResponseException ex) {
        Logger.error("Cloud exception, failed to create network: status code {} tenant: {}, env: {} network {}",
                ex.getStatusCode(), tenant.getName(), env.getName(), newNetwork.getName());
        return ProvisioningProviderResponseType.CLOUD_EXCEPTION;
    }

    //TODO: Need to get detailed error codes for the call above. Research the StatusCode class
    if (network == null) {
        Logger.error(
                "Failed to create network, failure in Cloud provider. Tenant: {} Environment: {} Network: {}",
                tenant.getName(), env.getName(),
                ToStringBuilder.reflectionToString(newNetwork, ToStringStyle.MULTI_LINE_STYLE));
        return ProvisioningProviderResponseType.CLOUD_FAILURE;
    }

    //copy the cloud ID to the Gemini object as it is required later
    newNetwork.setCloudID(network.getId());

    //now create subnets in network
    newNetwork.getSubnets().stream().forEach(gs -> {
        //create the subnet
        Subnet subnet = null;
        try {
            subnet = os.networking().subnet().create(Builders.subnet().tenantId(tenant.getTenantID())
                    .gateway(InetAddresses.toAddrString(gs.getGateway())).enableDHCP(gs.isEnableDHCP())
                    .ipVersion(gs.getNetworkType() == IPAddressType.IPv6 ? IPVersionType.V6 : IPVersionType.V4)
                    .name(gs.getName()).networkId(newNetwork.getCloudID()).cidr(gs.getCidr()).build());
            gs.setCloudID(subnet.getId());
        } catch (ClientResponseException ex) {
            Logger.error(
                    "Cloud exception, failed to create subnet. status code {} tenant: {} env: {} network: {} subnet: {}",
                    ex.getStatusCode(), tenant.getName(), env.getName(), newNetwork.getName(), gs.getName());
        }

        if (subnet == null) {
            Logger.error("Cloud failure, failed to create subnet. tenant: {} env: {} network: {} subnet: {}",
                    tenant.getName(), env.getName(), newNetwork.getName(), gs.getName());
        }
    });

    Logger.debug("Successfully created network and it's subnets - Tenant: {} Environment: {} Network: {}",
            tenant.getName(), env.getName(),
            ToStringBuilder.reflectionToString(newNetwork, ToStringStyle.MULTI_LINE_STYLE));
    return ProvisioningProviderResponseType.SUCCESS;
}

From source file:com.jeefuse.system.security.web.rto.GsysUserRTO.java

/** @generated */
@Override/*w  w  w  . j a v a  2s  .  co  m*/
public String toString() {
    return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", id)
            .append("username", username).append("createTime", createTime).append("email", email)
            .append("enabled", enabled).append("level", level).append("loginName", loginName)
            .append("logincount", logincount).append("password", password).append("remark", remark)
            .append("sex", sex).append("telephone", telephone).append("updateTime", updateTime)
            .append("lastLoginTime", lastLoginTime).append("gsysRelUserRoles", gsysRelUserRoles).toString();
}

From source file:com.xtructure.xneat.network.impl.NeuralNetworkImpl.java

@Override
public String toString() {
    return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)//
            .append("genomeId", genomeId)//
            .append("neurons", neurons)//
            .append("connections", connections)//
            .toString();/*  w w  w . j  a  va  2s  .  c  om*/
}

From source file:edu.harvard.iq.dvn.ingest.dsb.impl.DvnRDataAnalysisServiceImpl.java

/** *************************************************************
 * Execute an R-based dvn statistical analysis request 
 *
 * @param sro    a DvnRJobRequest object that contains various parameters
 * @return    a Map that contains various information about results
 *///from  w ww .j  a va  2 s .  c o m

public Map<String, String> execute(DvnRJobRequest sro) {

    // Step 1. Copy of Rdata file
    // Step 2. Subset Rdata file
    // Step 3. Return the subsetted Rdata file instead of the original

    // set the return object
    Map<String, String> result = new HashMap<String, String>();
    // temporary result
    Map<String, String> tmpResult = new HashMap<String, String>();

    try {
        // Set up an Rserve connection
        dbgLog.info("sro dump:\n" + ToStringBuilder.reflectionToString(sro, ToStringStyle.MULTI_LINE_STYLE));

        dbgLog.fine("RSERVE_USER=" + RSERVE_USER + "[default=rserve]");
        dbgLog.fine("RSERVE_PWD=" + RSERVE_PWD + "[default=rserve]");
        dbgLog.fine("RSERVE_PORT=" + RSERVE_PORT + "[default=6311]");

        RConnection c = new RConnection(RSERVE_HOST, RSERVE_PORT);
        dbgLog.fine("hostname=" + RSERVE_HOST);

        c.login(RSERVE_USER, RSERVE_PWD);
        dbgLog.info("R Version = " + c.eval("R.version$version.string").asString() + "<");
        dbgLog.info("SRO request type: " + sro.getRequestType());

        // check working directories
        // This needs to be done *before* we try to create any files 
        // there!
        setupWorkingDirectories(c);

        // save the data file at the Rserve side
        String infile = sro.getSubsetFileName();

        InputStream inb = new BufferedInputStream(new FileInputStream(infile));

        int bufsize;
        byte[] bffr = new byte[1024];

        RFileOutputStream os = c.createFile(tempFileName);
        while ((bufsize = inb.read(bffr)) != -1) {
            os.write(bffr, 0, bufsize);
        }
        os.close();
        inb.close();

        // save the original data file on the server-side

        // WORKS STARTS HERE
        // os = c.createFile(tempOriginalFileName);

        // Rserve code starts here
        dbgLog.fine("DvnRserveComm: " + "wrkdir=" + wrkdir);
        //dbgLog.fine("DvnRserveComm: "+librarySetup);
        //historyEntry.add(librarySetup);
        //c.voidEval(librarySetup);

        Properties p = System.getProperties();
        String domainRoot = p.getProperty("com.sun.aas.instanceRoot");
        String rFunctionsFileName = domainRoot + "/config/" + DVN_R_DATA_FUNCTIONS;

        dbgLog.fine("Source code for the custom DVN R functions: " + rFunctionsFileName);

        File rFunctionsFile = new File(rFunctionsFileName);
        if (!rFunctionsFile.exists()) {
            throw new IOException("Could not find R source code file " + rFunctionsFileName);
        }

        /* 
         * Send the R code file across:
         */

        inb = new BufferedInputStream(new FileInputStream(rFunctionsFile));

        os = c.createFile(tempRCodeFileName);
        while ((bufsize = inb.read(bffr)) != -1) {
            os.write(bffr, 0, bufsize);
        }
        os.close();
        inb.close();

        /* 
         * And read it in: 
         */

        String newLibrarySetup = "source(\"" + tempRCodeFileName + "\");";
        dbgLog.fine("DvnRserveComm: " + newLibrarySetup);
        historyEntry.add(newLibrarySetup);
        c.voidEval(newLibrarySetup);
        dbgLog.fine("DVN R Code library has been read.");

        // variable type
        /* 
        vartyp <-c(1,1,1)
        */
        // java side
        // int [] jvartyp  = {1,1,1};// = mp.get("vartyp").toArray()
        // int [] jvartyp  = sro.getVariableTypes();
        /*
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0 ; i< jvartyp.length; i++){
        if (i == (jvartyp.length -1)){
            sb.append(String.valueOf(jvartyp[i]));
        } else {
            sb.append(String.valueOf(jvartyp[i])+", ");
        }
                    }
                            
                    // R side
                    historyEntry.add("vartyp<-c(" + sb.toString()+")");
        */

        //c.assign("vartyp", new REXPInteger(jvartyp));
        if ("Download".equals(sro.getRequestType())) {
            /*
             * Note that we want to use the "getVariableTypesWithBoolean method 
             * when the subset is being created for download/conversion; when 
             * we create a SRO object for analysis, we'll still be using 
             * the old getVariableTypes
             * method, that don't recognize Booleans as a distinct class. 
             * So they will be treated simply as numeric categoricals 
             * (factors) with the "TRUE" and "FALSE" labels. But for the purposes
             * of saving the subset in R format, we want to convert these into
             * R "logical" vectors.
             * 
             * TODO: verify what's going to happen to these "logical"
             * variables when we call R package Foreign to convert the 
             * dataset into STATA format. -- L.A. 
             */

            dbgLog.fine("raw variable type=" + sro.getVariableTypesWithBoolean());
            c.assign("vartyp", new REXPInteger(sro.getVariableTypesWithBoolean()));
            String[] tmpt = c.eval("vartyp").asStrings();
            dbgLog.fine("vartyp length=" + tmpt.length + "\t " + StringUtils.join(tmpt, ","));

        } else {
            historyEntry.add("vartyp<-c(" + StringUtils.join(sro.getVariableTypesAsString(), ",") + ")");
            dbgLog.fine("DvnRserveComm: " + "vartyp<-c(" + StringUtils.join(sro.getVariableTypesAsString(), ",")
                    + ")");

            dbgLog.fine("raw variable type=" + sro.getVariableTypes());
            c.assign("vartyp", new REXPInteger(sro.getVariableTypes()));
            String[] tmpt = c.eval("vartyp").asStrings();
            dbgLog.fine(
                    "DvnRserveComm: " + "vartyp length=" + tmpt.length + "\t " + StringUtils.join(tmpt, ","));
        }

        // variable format (date/time)
        /* 
        varFmt<-list();
        c.voidEval("varFmt<-list()");
        */

        Map<String, String> tmpFmt = sro.getVariableFormats();
        dbgLog.fine("DvnRserveComm: " + "tmpFmt=" + tmpFmt);
        if (tmpFmt != null) {
            Set<String> vfkeys = tmpFmt.keySet();
            String[] tmpfk = (String[]) vfkeys.toArray(new String[vfkeys.size()]);
            String[] tmpfv = getValueSet(tmpFmt, tmpfk);
            historyEntry.add("tmpfk<-c(" + StringUtils.join(tmpfk, ", ") + ")");
            dbgLog.fine("DvnRserveComm: " + "tmpfk<-c(" + StringUtils.join(tmpfk, ", ") + ")");

            c.assign("tmpfk", new REXPString(tmpfk));
            historyEntry.add("tmpfv<-c(" + StringUtils.join(tmpfv, ", ") + ")");
            dbgLog.fine("DvnRserveComm: " + "tmpfv<-c(" + StringUtils.join(tmpfv, ", ") + ")");
            c.assign("tmpfv", new REXPString(tmpfv));
            String fmtNamesLine = "names(tmpfv)<- tmpfk";
            historyEntry.add(fmtNamesLine);

            dbgLog.fine("DvnRserveComm: " + fmtNamesLine);
            c.voidEval(fmtNamesLine);

            String fmtValuesLine = "varFmt<- as.list(tmpfv)";
            historyEntry.add(fmtValuesLine);

            dbgLog.fine("DvnRserveComm: " + fmtValuesLine);
            c.voidEval(fmtValuesLine);
        } else {
            String[] varFmtN = {};
            List<String> varFmtV = new ArrayList<String>();
            historyEntry.add("varFmt <- list()");

            dbgLog.fine("DvnRserveComm: " + "varFmt <- list()");
            c.assign("varFmt", new REXPList(new RList(varFmtV, varFmtN)));
        }
        /*
        vnames<-c("race","age","vote")
        */

        // variable names
        // String [] jvnames = {"race","age","vote"};

        String[] jvnamesRaw = sro.getVariableNames();
        String[] jvnames = null;

        //VariableNameFilterForR nf = new VariableNameFilterForR(jvnamesRaw);

        if (sro.hasUnsafedVariableNames) {
            // create  list
            jvnames = sro.safeVarNames;
            dbgLog.fine("renamed=" + StringUtils.join(jvnames, ","));
        } else {
            jvnames = jvnamesRaw;
        }
        //historyEntry.add("vnamnes<-c("+ StringUtils.join(jvnames, ", ")+")");
        String vnQList = DvnDSButil.joinNelementsPerLine(jvnames, true);
        historyEntry.add("vnames<-c(" + vnQList + ")");

        c.assign("vnames", new REXPString(jvnames));

        // confirmation
        String[] tmpjvnames = c.eval("vnames").asStrings();
        dbgLog.fine("DvnRserveComm: " + "vnames:" + StringUtils.join(tmpjvnames, ","));

        /*
        x<-read.table141vdc(file="/tmp/VDC/t.28948.1.tab", 
            col.names=vnames, colClassesx=vartyp, varFormat=varFmt)
        */

        //String datafilename = "/nfs/home/A/asone/java/rcode/t.28948.1.tab";

        // tab-delimited file name = tempFileName

        // vnames = Arrays.deepToString(new REXPString(jvnames).asStrings())
        // vartyp = Arrays.deepToString(new REXPInteger(sro.getUpdatedVariableTypes()).asStrings())
        // varFmt = 
        dbgLog.fine("col names ..... " + Arrays.deepToString(jvnames));
        dbgLog.fine("colClassesX ... " + Arrays.toString(sro.getVariableTypesWithBoolean()));
        dbgLog.fine("varFormat ..... " + tmpFmt);

        String readtableline = "x<-read.table141vdc(file='" + tempFileName
                + "', col.names=vnames, colClassesx=vartyp, varFormat=varFmt )";

        historyEntry.add(readtableline);
        dbgLog.fine("DvnRserveComm: " + "readtable=" + readtableline);

        c.voidEval(readtableline);

        // safe-to-raw variable name
        /* 
          attr(x, "Rsafe2raw")<-list();
        */
        //if (nf.hasRenamedVariables()){
        if (sro.hasUnsafedVariableNames) {
            dbgLog.fine("unsafeVariableNames exist");
            // create  list
            //jvnames = nf.getFilteredVarNames();
            jvnames = sro.safeVarNames;
            String[] rawNameSet = sro.renamedVariableArray;
            String[] safeNameSet = sro.renamedResultArray;

            historyEntry.add("tmpRN<-c(" + StringUtils.join(rawNameSet, ", ") + ")");
            c.assign("tmpRN", new REXPString(rawNameSet));
            historyEntry.add("tmpSN<-c(" + StringUtils.join(safeNameSet, ", ") + ")");
            c.assign("tmpSN", new REXPString(safeNameSet));

            String raw2safevarNameTableLine = "names(tmpRN)<- tmpSN";
            historyEntry.add(raw2safevarNameTableLine);
            c.voidEval(raw2safevarNameTableLine);
            String attrRsafe2rawLine = "attr(x, 'Rsafe2raw')<- as.list(tmpRN)";
            historyEntry.add(attrRsafe2rawLine);
            c.voidEval(attrRsafe2rawLine);
        } else {
            String attrRsafe2rawLine = "attr(x, 'Rsafe2raw')<-list();";
            historyEntry.add(attrRsafe2rawLine);
            c.voidEval(attrRsafe2rawLine);
        }

        //Map<String, String> Rsafe2raw = sro.getRaw2SafeVarNameTable();

        // asIs
        /* 
        for (i in 1:dim(x)[2]){if (attr(x,"var.type")[i] == 0) {
        x[[i]]<-I(x[[i]]);  x[[i]][ x[[i]] == '' ]<-NA  }}
        */

        /* 
         * Commenting out the fragment below: 
         * - this is now being done early on in the read.table141vdc
         *   R function:
                 
        String asIsline  = "for (i in 1:dim(x)[2]){ "+
        "if (attr(x,'var.type')[i] == 0) {" +
        "x[[i]]<-I(x[[i]]);  x[[i]][ x[[i]] == '' ]<-NA  }}";
        historyEntry.add(asIsline);
        c.voidEval(asIsline);
        */

        // replication: copy the data.frame
        String repDVN_Xdupline = "dvnData<-x";
        c.voidEval(repDVN_Xdupline);
        tmpResult.put("dvn_dataframe", "dvnData");

        // recoding line
        if (sro.hasRecodedVariables()) {

            // subsetting 

            // For operations on time values during recoding we need
            // to set the following option (this is to enable millisecond
            // precision time): 
            //      -- L.A., v3.6

            c.voidEval("saved.options <- options(digits.secs = 3)");

            List<String> scLst = sro.getSubsetConditions();
            if (scLst != null) {
                for (String sci : scLst) {
                    dbgLog.fine("sci:" + sci);
                    historyEntry.add(sci);
                    c.voidEval(sci);
                }
                tmpResult.put("subset", "T");
            }
            // recoding

            List<String> rcLst = sro.getRecodeConditions();
            if (rcLst != null) {
                for (String rci : rcLst) {
                    dbgLog.fine("rci:" + rci);

                    historyEntry.add(rci);
                    c.voidEval(rci);
                }

                // subsetting (mutating the data.frame strips non-default attributes 
                // 
                // variable type must be re-attached

                if (!"Download".equals(sro.getRequestType())) {
                    String varTypeNew = "vartyp<-c("
                            + StringUtils.join(sro.getUpdatedVariableTypesAsString(), ",") + ")";
                    historyEntry.add(varTypeNew);
                    dbgLog.fine("updated var Type =" + sro.getUpdatedVariableTypesAsString());
                    c.assign("vartyp", new REXPInteger(sro.getUpdatedVariableTypes()));
                } else {
                    dbgLog.fine("updated var Type =" + sro.getUpdatedVariableTypesWithBooleanAsString());
                    c.assign("vartyp", new REXPInteger(sro.getUpdatedVariableTypesWithBoolean()));
                }

                String reattachVarTypeLine = "attr(x, 'var.type') <- vartyp";
                historyEntry.add(reattachVarTypeLine);

                dbgLog.fine("DvnRserveComm: " + reattachVarTypeLine);
                c.voidEval(reattachVarTypeLine);

                // replication: variable type
                String repDVN_vt = "attr(dvnData, 'var.type') <- vartyp";

                dbgLog.fine("DvnRserveComm: " + repDVN_vt);
                c.voidEval(repDVN_vt);

                // new (recoded) variable names: 
                String varNamesRecoded = "recodedvnames<-c(" + StringUtils.join(sro.getRecodedVarNameSet(), ",")
                        + ")";
                historyEntry.add(varNamesRecoded);
                dbgLog.fine("recoded var names =" + StringUtils.join(sro.getRecodedVarNameSet(), ","));
                c.assign("recodedvnames", sro.getRecodedVarNameSet());

                tmpFmt = sro.getUpdatedVariableFormats();
                dbgLog.fine("DvnRserveComm: " + "(recoded)tmpFmt=" + tmpFmt);
                if (tmpFmt != null) {
                    Set<String> vfkeys = tmpFmt.keySet();
                    String[] tmpfk = (String[]) vfkeys.toArray(new String[vfkeys.size()]);
                    String[] tmpfv = getValueSet(tmpFmt, tmpfk);
                    historyEntry.add("tmpfk<-c(" + StringUtils.join(tmpfk, ", ") + ")");
                    dbgLog.fine("DvnRserveComm: " + "(recoded)tmpfk<-c(" + StringUtils.join(tmpfk, ", ") + ")");

                    c.assign("tmpfk", new REXPString(tmpfk));
                    historyEntry.add("tmpfv<-c(" + StringUtils.join(tmpfv, ", ") + ")");
                    dbgLog.fine("DvnRserveComm: " + "(recoded)tmpfv<-c(" + StringUtils.join(tmpfv, ", ") + ")");
                    c.assign("tmpfv", new REXPString(tmpfv));
                    String fmtNamesLine = "names(tmpfv)<- tmpfk";
                    historyEntry.add(fmtNamesLine);

                    dbgLog.fine("DvnRserveComm: (recoded)" + fmtNamesLine);
                    c.voidEval(fmtNamesLine);

                    String fmtValuesLine = "varFmt<- as.list(tmpfv)";
                    historyEntry.add(fmtValuesLine);

                    dbgLog.fine("DvnRserveComm: (recoded)" + fmtValuesLine);
                    c.voidEval(fmtValuesLine);
                } else {
                    String[] varFmtN = {};
                    List<String> varFmtV = new ArrayList<String>();
                    historyEntry.add("varFmt <- list()");

                    dbgLog.fine("DvnRserveComm: (recoded)" + "varFmt <- list()");
                    c.assign("varFmt", new REXPList(new RList(varFmtV, varFmtN)));
                }

                // run post-processing on the newly created recode variables:
                dbgLog.fine("running transformrecoded()");

                historyEntry.add("transformrecoded()");
                int recodedVarsStartIndex = sro.getVariableNames().length + 1;
                dbgLog.fine("recoded variables start at " + recodedVarsStartIndex);
                c.voidEval("x<-transformrecoded(x, recodedvarsindx=" + recodedVarsStartIndex
                        + ", col.names=c(vnames,recodedvnames), colClassesx=vartyp, varFormat=varFmt)");
            }

            // reset the milliseconds option: 

            c.voidEval("options(saved.options)");
        }

        // variable Id
        /* 
        attr(x, "var.nmbr")<-c("v198057","v198059","v198060")
        */

        // String[] jvarnmbr = {"v198057","v198059","v198060"};
        //String[] jvarnmbr = sro.getVariableIds();
        // after recoding 
        String[] jvarnmbr = sro.getUpdatedVariableIds();

        String viQList = DvnDSButil.joinNelementsPerLine(jvarnmbr, true);
        historyEntry.add("varnmbr <-c(" + viQList + ")");
        c.assign("varnmbr", new REXPString(jvarnmbr));

        String attrVarNmbrLine = "attr(x, 'var.nmbr')<-varnmbr";
        historyEntry.add(attrVarNmbrLine);

        dbgLog.fine("DvnRserveComm: (varnmbr) " + attrVarNmbrLine);
        c.voidEval(attrVarNmbrLine);

        // confirmation
        String[] vno = c.eval("attr(x, 'var.nmbr')").asStrings();
        dbgLog.fine("varNo=" + StringUtils.join(vno, ","));

        // replication: variable number
        String repDVN_vn = "attr(dvnData, 'var.nmbr') <- varnmbr";

        dbgLog.fine("DvnRserveComm: " + repDVN_vn);
        c.voidEval(repDVN_vn);

        // variable labels
        /* 
        attr(x, "var.labels")<-c("race","age","vote")
        */

        // String[] jvarlabels = {"race","age","vote"};
        // String[] jvarlabels = sro.getVariableLabels();
        // after recoding
        String[] jvarlabels = sro.getUpdatedVariableLabels();

        String vlQList = DvnDSButil.joinNelementsPerLine(jvarlabels, true);

        historyEntry.add("varlabels <-c(" + vlQList + ")");

        dbgLog.fine("DvnRserveComm: " + "varlabels <-c(" + vlQList + ")");
        c.assign("varlabels", new REXPString(jvarlabels));

        String attrVarLabelsLine = "attr(x, 'var.labels')<-varlabels";
        historyEntry.add(attrVarLabelsLine);

        dbgLog.fine("DvnRserveComm: " + attrVarLabelsLine);
        c.voidEval(attrVarLabelsLine);

        // confirmation
        String[] vlbl = c.eval("attr(x, 'var.labels')").asStrings();
        dbgLog.fine("varlabels=" + StringUtils.join(vlbl, ","));

        // replication: 
        String repDVN_vl = "attr(dvnData, 'var.labels') <- varlabels";

        dbgLog.fine("DvnRserveComm: " + repDVN_vl);
        c.voidEval(repDVN_vl);

        // --------- start: block to be used for the production code
        // value-label table
        /* 
        VALTABLE<-list()
        VALTABLE[["1"]]<-list(
        "2"="white",
        "1"="others")
        attr(x, 'val.table')<-VALTABLE
        */

        // create the VALTABLE
        String vtFirstLine = "VALTABLE<-list()";
        historyEntry.add(vtFirstLine);

        dbgLog.fine("DvnRserveComm: " + vtFirstLine);
        c.voidEval(vtFirstLine);

        c.voidEval("VALORDER<-list()");

        // vltbl includes both base and recoded cases when it was generated
        Map<String, Map<String, String>> vltbl = sro.getValueTable();
        Map<String, List<String>> orderedCategoryValues = sro.getCategoryValueOrders();
        Map<String, String> rnm2vi = sro.getRawVarNameToVarIdTable();
        String[] updatedVariableIds = sro.getUpdatedVariableIds();

        //for (int j=0;j<jvnamesRaw.length;j++){
        for (int j = 0; j < updatedVariableIds.length; j++) {
            // if this variable has its value-label table,
            // pass its key and value arrays to the Rserve
            // and finalize a value-table at the Rserve

            //String varId = rnm2vi.get(jvnamesRaw[j]);
            String varId = updatedVariableIds[j];

            if (vltbl.containsKey(varId)) {

                Map<String, String> tmp = (HashMap<String, String>) vltbl.get(varId);
                Set<String> vlkeys = tmp.keySet();
                String[] tmpk = (String[]) vlkeys.toArray(new String[vlkeys.size()]);
                String[] tmpv = getValueSet(tmp, tmpk);
                // debug
                dbgLog.fine("tmp:k=" + StringUtils.join(tmpk, ","));
                dbgLog.fine("tmp:v=" + StringUtils.join(tmpv, ","));

                // index number starts from 1(not 0)
                int indx = j + 1;
                dbgLog.fine("index=" + indx);

                if (tmpv.length > 0) {

                    historyEntry.add("tmpk<-c(" + DvnDSButil.joinNelementsPerLine(tmpk, true) + ")");
                    c.assign("tmpk", new REXPString(tmpk));

                    historyEntry.add("tmpv<-c(" + DvnDSButil.joinNelementsPerLine(tmpv, true) + ")");
                    c.assign("tmpv", new REXPString(tmpv));

                    String namesValueLine = "names(tmpv)<- tmpk";
                    historyEntry.add(namesValueLine);
                    c.voidEval(namesValueLine);

                    String sbvl = "VALTABLE[['" + Integer.toString(indx) + "']]" + "<- as.list(tmpv)";
                    dbgLog.fine("frag=" + sbvl);
                    historyEntry.add(sbvl);
                    c.voidEval(sbvl);

                    // confirmation test for j-th variable name
                    REXP jl = c.parseAndEval(sbvl);
                    dbgLog.fine("jl(" + j + ") = " + jl);
                }
            }

            if (orderedCategoryValues != null && orderedCategoryValues.containsKey(varId)) {
                int indx = j + 1;
                List<String> orderList = orderedCategoryValues.get(varId);
                if (orderList != null) {
                    String[] ordv = (String[]) orderList.toArray(new String[orderList.size()]);
                    dbgLog.fine("ordv=" + StringUtils.join(ordv, ","));
                    c.assign("ordv", new REXPString(ordv));
                    String sbvl = "VALORDER[['" + Integer.toString(indx) + "']]" + "<- as.list(ordv)";
                    dbgLog.fine("VALORDER[...]=" + sbvl);
                    historyEntry.add(sbvl);
                    c.voidEval(sbvl);
                } else {
                    dbgLog.fine("NULL orderedCategoryValues list.");
                }
            }
        }

        // debug: confirmation test for value-table
        dbgLog.fine("length of vl=" + c.eval("length(VALTABLE)").asInteger());
        String attrValTableLine = "attr(x, 'val.table')<-VALTABLE";
        historyEntry.add(attrValTableLine);
        c.voidEval(attrValTableLine);

        // replication: value-label table
        String repDVN_vlt = "attr(dvnData, 'val.table') <- VALTABLE";
        c.voidEval(repDVN_vlt);

        // --------- end: block to be used for the production code

        // missing-value list: TO DO
        /*
        MSVLTBL<-list(); attr(x, 'missval.table')<-MSVLTBL
        */
        String msvStartLine = "MSVLTBL<-list();";
        historyEntry.add(msvStartLine);
        c.voidEval(msvStartLine);
        // data structure
        String attrMissvalLine = "attr(x, 'missval.table')<-MSVLTBL";
        historyEntry.add(attrMissvalLine);
        c.voidEval(attrMissvalLine);

        // replication: missing value table
        String repDVN_mvlt = "attr(dvnData, 'missval.table') <- MSVLTBL";
        c.voidEval(repDVN_mvlt);

        // attach attributes(tables) to the data.frame
        /*
        x<-createvalindex(dtfrm=x, attrname='val.index')
        x<-createvalindex(dtfrm=x, attrname='missval.index')
        */
        String createVIndexLine = "x<-createvalindex(dtfrm=x, attrname='val.index');";
        historyEntry.add(createVIndexLine);
        c.voidEval(createVIndexLine);
        String createMVIndexLine = "x<-createvalindex(dtfrm=x, attrname='missval.index');";
        historyEntry.add(createMVIndexLine);
        c.voidEval(createMVIndexLine);

        // reflection block: start ------------------------------------------>

        String requestTypeToken = sro.getRequestType();// (Download|EDA|Xtab|Zelig)
        dbgLog.fine("requestTypeToken=" + requestTypeToken);
        historyEntry.add("#### The Request is " + requestTypeToken + " ####");
        // get a test method
        Method mthd = runMethods.get(requestTypeToken);
        dbgLog.fine("method=" + mthd);

        try {
            // invoke this method
            result = (Map<String, String>) mthd.invoke(this, sro, c);
        } catch (InvocationTargetException e) {
            //Throwable cause = e.getCause();
            //err.format(cause.getMessage());
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        // add the variable list
        result.put("variableList", joinNelementsPerLine(jvnamesRaw, 5, null, false, null, null));

        //result.put("variableList",StringUtils.join(jvnamesRaw, ", "));

        // replication: var-level unf
        String repDVN_varUNF = "attr(dvnData, 'variableUNF') <- paste(unf(dvnData,version=3))";
        c.voidEval(repDVN_varUNF);

        // calculate the file-leve UNF

        String fileUNFline = "fileUNF <- paste(summary(unf(dvnData, version=3)))";
        c.voidEval(fileUNFline);
        String fileUNF = c.eval("fileUNF").asString();
        if (fileUNF == null) {
            fileUNF = "NA";
        }

        // replication: file-level unf
        String repDVN_fileUNF = "attr(dvnData, 'fileUNF') <- fileUNF";
        c.voidEval(repDVN_fileUNF);

        String RversionLine = "R.Version()$version.string";
        String Rversion = c.eval(RversionLine).asString();

        dbgLog.fine(String.format("R-version String = %s", Rversion));

        // replication: R version
        String repDVN_Rversion = "attr(dvnData, 'R.version') <- R.Version()$version.string";
        c.voidEval(repDVN_Rversion);

        String zeligVersionLine = "packageDescription('Zelig')$Version";
        String zeligVersion = c.eval(zeligVersionLine).asString();

        //String RexecDate = c.eval("date()").asString();
        String RexecDate = c.eval("as.character(as.POSIXct(Sys.time()))").asString();
        // replication: date
        String repDVN_date = "attr(dvnData, 'date') <- as.character(as.POSIXct(Sys.time()))";
        c.voidEval(repDVN_date);

        String repDVN_dfOrigin = "attr(dvnData, 'data.frame.origin')<- "
                + "list('provider'='Dataverse Network Project',"
                + "'format' = list('name' = 'DVN data.frame', 'version'='1.3'))";
        c.voidEval(repDVN_dfOrigin);
        /*
        if (result.containsKey("option")){
        result.put("R_run_status", "T");
        } else {
        result.put("option", requestTypeToken.toLowerCase()); //download  zelig eda xtab
        result.put("R_run_status", "F");
        }
        */
        if (sro.hasRecodedVariables()) {
            if (sro.getSubsetConditions() != null) {
                result.put("subsettingCriteria", StringUtils.join(sro.getSubsetConditions(), "\n"));
                // replication: subset lines
                String[] sbst = null;
                sbst = (String[]) sro.getSubsetConditions()
                        .toArray(new String[sro.getSubsetConditions().size()]);

                c.assign("sbstLines", new REXPString(sbst));

                String repDVN_sbst = "attr(dvnData, 'subsetLines') <- sbstLines";
                c.voidEval(repDVN_sbst);
            }
            /* to be used in the future? */
            if (sro.getRecodeConditions() != null) {
                result.put("recodingCriteria", StringUtils.join(sro.getRecodeConditions(), "\n"));
                String[] rcd = null;
                rcd = (String[]) sro.getRecodeConditions()
                        .toArray(new String[sro.getRecodeConditions().size()]);

                c.assign("rcdtLines", new REXPString(rcd));

                String repDVN_rcd = "attr(dvnData, 'recodeLines') <- rcdtLines";
                c.voidEval(repDVN_rcd);
            }

        }

        // save workspace as a replication data set

        String RdataFileName = "DVNdataFrame." + PID + ".RData";
        result.put("Rdata", "/" + requestdir + "/" + RdataFileName);

        String saveWS = "save('dvnData', file='" + wrkdir + "/" + RdataFileName + "')";
        dbgLog.fine("save the workspace=" + saveWS);
        c.voidEval(saveWS);

        // write back the R workspace to the dvn 

        String wrkspFileName = wrkdir + "/" + RdataFileName;
        dbgLog.fine("wrkspFileName=" + wrkspFileName);

        int wrkspflSize = getFileSize(c, wrkspFileName);

        File wsfl = writeBackFileToDvn(c, wrkspFileName, RWRKSP_FILE_PREFIX, "RData", wrkspflSize);

        result.put("dvn_RData_FileName", wsfl.getName());

        if (wsfl != null) {
            result.put("wrkspFileName", wsfl.getAbsolutePath());
            dbgLog.fine("wrkspFileName=" + wsfl.getAbsolutePath());
        } else {
            dbgLog.fine("wrkspFileName is null");
        }

        result.put("library_1", "VDCutil");

        result.put("fileUNF", fileUNF);
        result.put("dsbHost", RSERVE_HOST);
        result.put("dsbPort", DSB_HOST_PORT);
        result.put("dsbContextRootDir", DSB_CTXT_DIR);
        result.put("PID", PID);
        result.put("Rversion", Rversion);
        result.put("zeligVersion", zeligVersion);
        result.put("RexecDate", RexecDate);
        result.put("RCommandHistory", StringUtils.join(historyEntry, "\n"));

        result.putAll(tmpResult);
        dbgLog.fine("result object (before closing the Rserve):\n" + result);

        // reflection block: end

        // create a zip file of the directory created: 

        //String zipTmpDir = "system(\"(cd "+DSB_TMP_DIR+"; zip -r /tmp/"+requestdir+".zip "+requestdir+")\")";
        //c.voidEval(zipTmpDir);        

        // transfer the zip file to the application side: 

        //RFileInputStream ris = null;
        //OutputStream outbr   = null;

        //int zipSize = getFileSize(c,"/tmp/"+requestdir+".zip");

        String listAnalysisFiles = "list.files('" + DSB_TMP_DIR + "/" + requestdir + "', recursive=TRUE)";
        dbgLog.fine("looking up the analysis result files on the DSB/Rserve side: " + listAnalysisFiles);
        String[] analysisReportFiles = c.eval(listAnalysisFiles).asStrings();
        RFileInputStream ris = null;
        OutputStream outbr = null;

        try {
            File localReportDir = new File(TEMP_DIR + "/DVN", requestdir);
            if (!localReportDir.exists()) {
                localReportDir.mkdir();
            }

            for (int i = 0; i < analysisReportFiles.length; i++) {
                String reportFile = analysisReportFiles[i];
                int reportFileSize = getFileSize(c, DSB_TMP_DIR + "/" + requestdir + "/" + reportFile);
                dbgLog.fine("DvnRData: transferring file " + reportFile);
                dbgLog.fine("DvnRData: file size: " + reportFileSize);

                if (reportFile.lastIndexOf("/") > 0) {
                    File localReportSubDir = new File(TEMP_DIR + "/DVN/" + requestdir,
                            reportFile.substring(0, reportFile.lastIndexOf("/")));
                    if (!localReportSubDir.exists()) {
                        localReportSubDir.mkdirs();
                    }
                }

                ris = c.openFile(DSB_TMP_DIR + "/" + requestdir + "/" + reportFile);
                outbr = new BufferedOutputStream(
                        new FileOutputStream(new File(TEMP_DIR + "/DVN/" + requestdir, reportFile)));

                byte[] obuf = new byte[reportFileSize];
                int obufsize = 0;

                while ((obufsize = ris.read(obuf)) != -1) {
                    outbr.write(obuf, 0, reportFileSize);
                }

                ris.close();
                outbr.close();
            }

            //String unZipCmd = "/usr/bin/unzip "+TEMP_DIR+"/DVN/"+requestdir+".zip -d "+TEMP_DIR+"/DVN";
            //int exitValue = 1;

            //dbgLog.fine("attempting to execute "+unZipCmd);

            //try {
            //Runtime runtime = Runtime.getRuntime();
            //Process process = runtime.exec(unZipCmd);
            //exitValue = process.waitFor();
            //} catch (Exception e) {
            //e.printStackTrace();
            //exitValue = 1;
            //}

            //if (exitValue == 0) {
            //result.put("webFolderArchived",TEMP_DIR+"/DVN/"+requestdir+".zip");
            //}

        } catch (FileNotFoundException fe) {
            fe.printStackTrace();
        } catch (IOException ie) {
            ie.printStackTrace();
        } finally {
            if (ris != null) {
                ris.close();
            }
            if (outbr != null) {
                outbr.close();
            }
        }

        // // move the temp dir to the web-temp root dir
        //String mvTmpDir = "file.rename('"+wrkdir+"','"+webwrkdir+"')";
        //dbgLog.fine("web-temp_dir="+mvTmpDir);
        //c.voidEval(mvTmpDir);        

        // close the Rserve connection
        c.close();

    } catch (RserveException rse) {
        // RserveException (Rserve is not running)
        rse.printStackTrace();

        result.put("dsbContextRootDir", DSB_CTXT_DIR);
        result.put("PID", PID);
        result.put("RCommandHistory", StringUtils.join(historyEntry, "\n"));
        result.put("option", sro.getRequestType().toLowerCase());

        result.put("RexecError", "true");
        return result;

    } catch (REXPMismatchException mme) {

        // REXP mismatch exception (what we got differs from what we expected)
        mme.printStackTrace();

        result.put("dsbContextRootDir", DSB_CTXT_DIR);
        result.put("PID", PID);
        result.put("RCommandHistory", StringUtils.join(historyEntry, "\n"));
        result.put("option", sro.getRequestType().toLowerCase());

        result.put("RexecError", "true");
        return result;

    } catch (IOException ie) {
        ie.printStackTrace();

        result.put("dsbContextRootDir", DSB_CTXT_DIR);
        result.put("PID", PID);
        result.put("RCommandHistory", StringUtils.join(historyEntry, "\n"));
        result.put("option", sro.getRequestType().toLowerCase());

        result.put("RexecError", "true");
        return result;

    } catch (Exception ex) {
        ex.printStackTrace();

        result.put("dsbContextRootDir", DSB_CTXT_DIR);
        result.put("PID", PID);

        result.put("RCommandHistory", StringUtils.join(historyEntry, "\n"));
        result.put("option", sro.getRequestType().toLowerCase());

        result.put("RexecError", "true");
        return result;
    }

    return result;

}

From source file:edu.harvard.iq.dvn.ingest.dsb.impl.DvnRGraphServiceImpl.java

/** *************************************************************
 * Execute an R-based dvn analysis request on a Graph object
 * using an open connection created during the Initialize call. 
 *
 * @param sro    a DvnJobRequest object that contains various parameters
 * @return    a Map that contains various information about the results
 *///from   ww w .j a  va 2  s . c  o m

public Map<String, String> liveConnectionExecute(DvnRJobRequest sro) throws DvnRGraphException {

    // set the return object
    Map<String, String> result = new HashMap<String, String>();

    if (sro != null) {
        dbgLog.fine(
                "LCE sro dump:\n" + ToStringBuilder.reflectionToString(sro, ToStringStyle.MULTI_LINE_STYLE));
    } else {
        throw new DvnRGraphException("execute method called with a NULL job ob ject.");

    }

    String SavedRworkSpace = null;

    Map<String, Object> SubsetParameters = sro.getParametersForGraphSubset();

    if (SubsetParameters != null) {
        SavedRworkSpace = (String) SubsetParameters.get(SAVED_RWORK_SPACE);
    } else {
        throw new DvnRGraphException("execute method called with a null parameters object");

    }

    DvnRConnection drc = null;

    try {
        // let's see if we have a connection that we can use: 

        if (myConnection == 0) {
            throw new DvnRGraphException("execute method called without securing a connection first");
        }

        myConnection = RConnectionPool.securePooledConnection(SavedRworkSpace, null, true, myConnection);
        dbgLog.info("Execute: obtained connection " + myConnection);

        drc = RConnectionPool.getConnection(myConnection);

        String GraphSubsetType = (String) SubsetParameters.get(RSUBSETFUNCTION);

        if (GraphSubsetType != null) {

            if (GraphSubsetType.equals(MANUAL_QUERY_SUBSET)) {

                String manualQueryType = (String) SubsetParameters.get(MANUAL_QUERY_TYPE);
                String manualQuery = (String) SubsetParameters.get(MANUAL_QUERY);

                String subsetCommand = null;

                if (manualQueryType != null) {
                    if (manualQueryType.equals(EDGE_SUBSET)) {
                        String dropDisconnected = (String) SubsetParameters.get(ELIMINATE_DISCONNECTED);
                        if (dropDisconnected != null) {
                            subsetCommand = "edge_subset(g, '" + manualQuery + "', TRUE)";
                        } else {
                            subsetCommand = "edge_subset(g, '" + manualQuery + "')";
                        }

                    } else if (manualQueryType.equals(VERTEX_SUBSET)) {
                        subsetCommand = "vertex_subset(g, '" + manualQuery + "')";
                    } else {
                        throw new DvnRGraphException("execute: unsupported manual query subset");

                    }

                    dbgLog.fine("LCE: manualQuerySubset=" + subsetCommand);
                    historyEntry.add(subsetCommand);
                    String cmdResponse = safeEval(drc.Rcon, subsetCommand).asString();

                }

            } else if (GraphSubsetType.equals(NETWORK_MEASURE)) {
                String networkMeasureType = (String) SubsetParameters.get(NETWORK_MEASURE_TYPE);
                String networkMeasureCommand = null;
                if (networkMeasureType != null) {
                    List<NetworkMeasureParameter> networkMeasureParameterList = (List<NetworkMeasureParameter>) SubsetParameters
                            .get(NETWORK_MEASURE_PARAMETER);
                    networkMeasureCommand = networkMeasureType + "(g"
                            + buildParameterComponent(networkMeasureParameterList) + ")";
                }

                if (networkMeasureCommand == null) {
                    throw new DvnRGraphException("ILLEGAL OR UNSUPPORTED NETWORK MEASURE QUERY");

                }

                historyEntry.add(networkMeasureCommand);
                String addedColumn = safeEval(drc.Rcon, networkMeasureCommand).asString();

                if (addedColumn != null) {
                    result.put(NETWORK_MEASURE_NEW_COLUMN, addedColumn);
                } else {
                    throw new DvnRGraphException("FAILED TO READ ADDED COLUMN NAME");

                }

            } else if (GraphSubsetType.equals(AUTOMATIC_QUERY_SUBSET)) {
                String automaticQueryType = (String) SubsetParameters.get(AUTOMATIC_QUERY_TYPE);
                String autoQueryCommand = null;
                if (automaticQueryType != null) {
                    String n = (String) SubsetParameters.get(AUTOMATIC_QUERY_N_VALUE);
                    autoQueryCommand = automaticQueryType + "(g, " + n + ")";

                }

                if (autoQueryCommand == null) {
                    throw new DvnRGraphException("NULL OR UNSUPPORTED AUTO QUERY");
                }

                historyEntry.add(autoQueryCommand);
                String cEval = safeEval(drc.Rcon, autoQueryCommand).asString();

            } else if (GraphSubsetType.equals(UNDO)) {
                String cEval = safeEval(drc.Rcon, "undo()").asString();
            } else if (GraphSubsetType.equals(RESET)) {
                dbgLog.info("resetting the workspace; using reset(" + SavedRworkSpace + ")");

                String cEval = safeEval(drc.Rcon, "reset('" + SavedRworkSpace + "')").asString();

            }

        }

        // get the vertices and edges counts: 

        String countCommand = "vcount(g)";
        int countResponse = safeEval(drc.Rcon, countCommand).asInteger();
        result.put(NUMBER_OF_VERTICES, Integer.toString(countResponse));

        countCommand = "ecount(g)";
        countResponse = safeEval(drc.Rcon, countCommand).asInteger();
        result.put(NUMBER_OF_EDGES, Integer.toString(countResponse));

        result.put(SAVED_RWORK_SPACE, RDataFileName);

        // we're done; let's add some potentially useful 
        // information to the result and return: 

        String RexecDate = drc.Rcon.eval("as.character(as.POSIXct(Sys.time()))").asString();
        String RversionLine = "R.Version()$version.string";
        String Rversion = drc.Rcon.eval(RversionLine).asString();

        result.put("dsbHost", RSERVE_HOST);
        result.put("dsbPort", DSB_HOST_PORT);
        result.put("IdSuffix", IdSuffix);
        result.put("Rversion", Rversion);
        result.put("RexecDate", RexecDate);
        result.put("RCommandHistory", StringUtils.join(historyEntry, "\n"));

        if (!SavedRworkSpace.equals(drc.getWorkSpace())) {
            throw new DvnRGraphException("Could not execute query: connection lost");
        }

    } catch (DvnRGraphException dre) {
        throw dre;
    } catch (RException re) {
        throw new DvnRGraphException(re.getMessage());

    } catch (RserveException rse) {

        dbgLog.info("LCE: rserve exception message: " + rse.getMessage());
        dbgLog.info("LCE: rserve exception description: " + rse.getRequestErrorDescription());
        throw new DvnRGraphException("RServe failure: " + rse.getMessage());

    } catch (REXPMismatchException mme) {

        throw new DvnRGraphException("REXPmismatchException occured");

    } catch (Exception ex) {

        throw new DvnRGraphException("Execute: unknown exception occured: " + ex.getMessage());

    } finally {
        if (drc != null) {
            // set the connection time stamp: 
            Date now = new Date();
            drc.setLastQueryTime(now.getTime());

            drc.unlockConnection();
        }
    }

    return result;

}

From source file:com.gemini.provision.loadbalancer.openstack.LoadBalancerProviderOpenStackImpl.java

@Override
public List<GeminiPoolMember> getPoolMembers(GeminiTenant tenant, GeminiEnvironment env,
        GeminiLoadBalancerPool pool) {/*from w  w  w  . j a  va  2  s.  c  o m*/
    List<GeminiPoolMember> lbPools = Collections.synchronizedList(new ArrayList());

    //authenticate the session with the OpenStack installation
    OSClient os = getOSClient(tenant, env);
    if (os == null) {
        Logger.error("Failed to authenticate Tenant: {}",
                ToStringBuilder.reflectionToString(tenant, ToStringStyle.MULTI_LINE_STYLE));
        return null;
    }
    List<? extends Member> members = os.networking().loadbalancers().member().list();
    members.stream().filter(member -> member != null).forEach(member -> {
        GeminiPoolMember geminiPoolMember = new GeminiPoolMember();
        geminiPoolMember.setCloudID(member.getId());
        geminiPoolMember.setAdminState(member.isAdminStateUp() ? AdminState.ADMIN_UP : AdminState.ADMIN_DOWN);
        geminiPoolMember.setProvisionState(ProvisionState.fromString(member.getStatus()));
        geminiPoolMember.setIpAddress(member.getAddress());
        geminiPoolMember.setProtocolPort(member.getProtocolPort());
        geminiPoolMember.setWeight(member.getWeight());
        geminiPoolMember.setPoolId(member.getPoolId());
        lbPools.add(geminiPoolMember);
    });
    return lbPools;
}

From source file:com.gemini.provision.security.openstack.SecurityProviderOpenStackImpl.java

/**
 *
 * @param tenant/*from ww  w.j  av a 2s. c o  m*/
 * @param env
 * @param securityGroup - assumes on the name is available in the object
 * @return
 *
 * Calls open stack to retrieve information about the security group.
 * Typically used when only a security group name is available and the
 * caller wants to get rest of the information
 */
@Override
public ProvisioningProviderResponseType getSecurityGroup(GeminiTenant tenant, GeminiEnvironment env,
        GeminiSecurityGroup securityGroup) {
    //authenticate the session with the OpenStack installation
    OSClient os = OSFactory.builder().endpoint(env.getEndPoint())
            .credentials(env.getAdminUserName(), env.getAdminPassword()).tenantName(tenant.getName())
            .authenticate();
    if (os == null) {
        Logger.error("Failed to authenticate Tenant: {}",
                ToStringBuilder.reflectionToString(tenant, ToStringStyle.MULTI_LINE_STYLE));
        return ProvisioningProviderResponseType.CLOUD_AUTH_FAILURE;
    }

    SecurityGroup osSecGrp = null;
    try {
        List<? extends SecurityGroup> osSecGrps = os.networking().securitygroup().list();
        osSecGrp = osSecGrps.stream().filter(osg -> osg.getName().equals(securityGroup.getName())).findFirst()
                .get();
    } catch (NullPointerException | ClientResponseException ex) {
        Logger.error(
                "Cloud Exception: {}\nCould not retrieve security group information in OpenStack. tenant: {} env: {} security group: {}",
                ex.toString(), tenant.getName(), env.getName(), securityGroup.getName());
        return ProvisioningProviderResponseType.CLOUD_EXCEPTION;
    } catch (NoSuchElementException ex) {
        //security group was not found, so return an error 
        Logger.error(
                "Security Group {} not found for tenant: {} env: {} Could not retrieve security group information in OpenStack. tenant: {} env: {} security group: {}",
                securityGroup.getName(), tenant.getName(), env.getName());
        return ProvisioningProviderResponseType.OBJECT_NOT_FOUND;
    }

    //copy the basic stuff
    securityGroup.setCloudID(osSecGrp.getId());
    securityGroup.setProvisioned(true);
    securityGroup.setName(osSecGrp.getName());
    securityGroup.setDescription(osSecGrp.getDescription());

    //now the rules
    List<? extends SecurityGroupRule> osSecGrpRules = osSecGrp.getRules();
    osSecGrpRules.stream().forEach(osSecGrpRule -> {
        //check to see if this already exists
        GeminiSecurityGroupRule gemSecGrpRule = null;
        try {
            securityGroup.getSecurityRules().stream()
                    //.filter(gsr -> gsr.getCloudID().equals(osSecGrpRule.getId())) // don't compare the cloud id, because this could be a new Gemini object
                    .filter(gsr -> gsr.getDirection().toString().toLowerCase()
                            .equals(osSecGrpRule.getDirection()))
                    .filter(gsr -> gsr.getIpAddressType().toString()
                            .contains(osSecGrpRule.getEtherType().toUpperCase()))
                    .filter(gsr -> gsr.getPortRangeMax().equals(osSecGrpRule.getPortRangeMax()))
                    .filter(gsr -> gsr.getPortRangeMin().equals(osSecGrpRule.getPortRangeMin()))
                    .filter(gsr -> gsr.getProtocol().toString().contains(osSecGrpRule.getProtocol()))
                    .filter(gsr -> gsr.getRemoteGroupId().equals(osSecGrpRule.getRemoteGroupId()))
                    .filter(gsr -> gsr.getRemoteIpPrefix().equals(osSecGrpRule.getRemoteIpPrefix())).findAny()
                    .get();
        } catch (NoSuchElementException | NullPointerException ex) {
            gemSecGrpRule = new GeminiSecurityGroupRule();
            securityGroup.addSecurityRule(gemSecGrpRule);
            gemSecGrpRule.setPortRangeMin(osSecGrpRule.getPortRangeMin());
            gemSecGrpRule.setPortRangeMax(osSecGrpRule.getPortRangeMax());
            gemSecGrpRule.setProtocol(Protocol.fromString(osSecGrpRule.getProtocol()));
            //                gemSecGrpRule.setCidr(osSecGrpRule.getRange().getCidr());
            gemSecGrpRule.setDirection(
                    GeminiSecurityGroupRuleDirection.valueOf(osSecGrpRule.getDirection().toUpperCase()));
            gemSecGrpRule.setRemoteGroupId(osSecGrpRule.getRemoteGroupId());
            gemSecGrpRule.setRemoteIpPrefix(osSecGrpRule.getRemoteIpPrefix());
            gemSecGrpRule.setIpAddressType(IPAddressType.valueOf(osSecGrpRule.getEtherType()));
            gemSecGrpRule.setParent(securityGroup);
        }
        //rule already existed or new one created - just copy the cloud ID
        gemSecGrpRule.setCloudID(osSecGrpRule.getId());
        gemSecGrpRule.setProvisioned(true);
    });
    Logger.debug("Successfully retrieved security group information Tenant: {} Env: {} security group {}",
            tenant.getName(), env.getName(), securityGroup.getName());
    return ProvisioningProviderResponseType.SUCCESS;
}

From source file:com.google.code.simplestuff.bean.SimpleBean.java

/**
 * //from   ww w  .j  a  v  a 2s .c om
 * Returns the description of a bean considering only the
 * {@link BusinessField} annotated fields.
 * 
 * @param bean The bean to describe.
 * @return The description of the bean.
 * @throws IllegalArgumentException If the bean is not a Business Object.
 */
public static String toString(Object bean) {

    if (bean == null) {
        throw new IllegalArgumentException("The bean passed is null!!!");
    }

    BusinessObjectDescriptor businessObjectInfo = BusinessObjectContext
            .getBusinessObjectDescriptor(bean.getClass());

    if (businessObjectInfo == null) {
        return bean.toString();
        // throw new IllegalArgumentException(
        // "The bean passed is not annotated in the hierarchy as Business Object!!!");
    }

    Collection<Field> annotatedField = businessObjectInfo.getAnnotatedFields();
    ToStringBuilder builder = new ToStringBuilder(bean, ToStringStyle.MULTI_LINE_STYLE);
    for (Field field : annotatedField) {
        final BusinessField fieldAnnotation = field.getAnnotation(BusinessField.class);
        if ((fieldAnnotation != null) && (fieldAnnotation.includeInToString())) {
            try {
                // Vincenzo Vitale(vita) May 23, 2007 2:39:26 PM: some
                // date implementations give not equals values...
                if ((ClassUtils.isAssignable(field.getType(), Date.class))
                        || (ClassUtils.isAssignable(field.getType(), Calendar.class))) {
                    Object fieldValue = PropertyUtils.getProperty(bean, field.getName());
                    if (fieldValue != null) {
                        builder.append(DateUtils.round(fieldValue, Calendar.SECOND));
                    }

                } else {
                    builder.append(PropertyUtils.getProperty(bean, field.getName()));
                }
            } catch (IllegalAccessException e) {
                if (log.isDebugEnabled()) {
                    log.debug(
                            "IllegalAccessException exception when calculating the string representation of class"
                                    + bean.getClass().toString(),
                            e);
                }
            } catch (InvocationTargetException e) {
                if (log.isDebugEnabled()) {
                    log.debug(
                            "InvocationTargetException exception when calculating the string representation of class"
                                    + bean.getClass().toString(),
                            e);
                }
            } catch (NoSuchMethodException e) {
                if (log.isDebugEnabled()) {
                    log.debug(
                            "NoSuchMethodException exception when calculating the string representation of a bean of class"
                                    + bean.getClass().toString(),
                            e);
                }
            }
        }
    }

    return builder.toString();

}