public void run( Constraint object, Resource resource, IProgressMonitor monitor, Map<String, VCObject> seenObjects, List<Option> globalOptions) throws JCoException { // determine name of containing dependencyNet // TODO implement finding containing dependency net with ECoreUtils DependencyNet dependencyNet = null; VcmlModel model = (VcmlModel) object.eContainer(); for (Object o : EcoreUtil.getObjectsByType(model.getObjects(), VcmlPackage.Literals.DEPENDENCY_NET)) { DependencyNet depNet = (DependencyNet) o; if (depNet.getConstraints().contains(object)) { dependencyNet = depNet; break; } } beginTransaction(); JCoFunction function = getJCoFunction("CAMA_CNET_CONSTRAINT_MAINTAIN", monitor); JCoParameterList ipl = function.getImportParameterList(); handleOptions(object.getOptions(), globalOptions, ipl, "CHANGE_NO", null); ipl.setValue("CONSTRAINT", object.getName()); if (dependencyNet != null) { ipl.setValue("CONSTRAINT_NET", dependencyNet.getName()); } ipl.setValue("DELETE_FLAG", "X"); try { execute(function, monitor, "DELETE " + object.getName()); endTransaction(); } catch (AbapException e) { handleAbapException(e); } }
public void run( Class object, Resource resource, IProgressMonitor monitor, Map<String, VCObject> seenObjects, List<Option> options) throws JCoException { beginTransaction(); JCoFunction function = getJCoFunction(getBAPI(), monitor); JCoParameterList ipl = function.getImportParameterList(); String classSpec = object.getName(); String className = VcmlUtils.getClassName(classSpec); int classType = VcmlUtils.getClassType(classSpec); // handleOptions(options, ipl, "???", "???"); ipl.setValue(getCLASSNUM(), className); ipl.setValue(getCLASSTYPE(), classType); JCoStructure classBasicDataNew = ipl.getStructure(getCLASSBASICDATA()); classBasicDataNew.setValue("STATUS", VcmlUtils.createIntFromStatus(object.getStatus())); classBasicDataNew.setValue("CLASSGROUP", nullIfEmpty(object.getGroup())); classBasicDataNew.setValue("VALID_FROM", getToday()); // TODO set VALID_FROM for classes? classBasicDataNew.setValue("VALID_TO", "9999-12-31"); // TODO set VALID_TO for classes? JCoParameterList tpl = function.getTableParameterList(); final JCoTable classDescriptionsNew = tpl.getTable(getCLASSDESCRIPTIONS()); new DescriptionHandler() { @Override public void handleSingleDescription(Language language, String value) { classDescriptionsNew.appendRow(); classDescriptionsNew.setValue("CATCHWORD", value); classDescriptionsNew.setValue("LANGU", VcmlUtils.getLanguageCharacter(language)); classDescriptionsNew.setValue("LANGU_ISO", language.toString()); } }.handleDescription(object.getDescription()); JCoTable classCharacteristicsNew = tpl.getTable(getCLASSCHARACTERISTICS()); List<Characteristic> cstics = object.getCharacteristics(); classCharacteristicsNew.appendRows(cstics.size()); for (Characteristic cstic : cstics) { classCharacteristicsNew.setValue("NAME_CHAR", cstic.getName()); classCharacteristicsNew.nextRow(); } execute(function, monitor, object.getName()); if (processReturnTable(function)) { commit(monitor); } endTransaction(); }
public void run(ProcedureRunner runner) throws Exception { CompositeMap context = runner.getContext(); logger = LoggingContext.getLogger(context, LOGGING_TOPIC); logger.config("jco-invoke"); logger.config("==================================="); logger.log(Level.CONFIG, "config:{0}", new Object[] {this}); ServiceInstance service = (ServiceInstance) ServiceInstance.getInstance(context.getRoot()); // HttpServiceInstance service = (HttpServiceInstance) HttpServiceInstance // .getInstance(context.getRoot()); CompositeMap target = null; CompositeMap model = null; if (service != null) model = service.getServiceContext().getModel(); else model = context.getRoot().getChild("model"); if (model == null) model = context.getRoot().createChild("model"); if (return_target != null) { String t = TextParser.parse(return_target, context); target = (CompositeMap) model.getObject(t); if (target == null) target = model.createChildByTag(t); } JCoDestination destination = sapConfig.getJCoDestination(sid); String functionName = function; JCoFunctionTemplate ftemplate = destination.getRepository().getFunctionTemplate(functionName); logger.info("function template:" + functionName); if (ftemplate == null) { logger.log(Level.SEVERE, "Function '" + function + "' not found in SAP system."); throw new IllegalArgumentException("Function '" + function + "' not found in SAP system."); } // Create a function from the template JCoFunction function = ftemplate.getFunction(); JCoParameterList input = function.getImportParameterList(); JCoParameterList output = function.getExportParameterList(); if (parameters != null) for (int i = 0; i < parameters.length; i++) { Parameter param = parameters[i]; if (param.Return_field == null) { Object o = param.Source_field == null ? param.Value : context.getObject(param.Source_field); String value = o == null ? "" : o.toString(); input.setValue(param.Name, value); logger.log(Level.CONFIG, "parameter {0} -> {1}", new Object[] {param.Name, value}); } } if (structures != null) { for (int i = 0; i < structures.length; i++) { Structure structure = structures[i]; structure.setLogger(logger); if (structure.isImport()) { JCoStructure stc = structure.getJCOStructure(input); structure.fillJCOStructure(stc, context); input.setValue(structure.Name, stc); } } } // Set import table if (tables != null) { JCoParameterList list = function.getTableParameterList(); for (int i = 0; i < tables.length; i++) { Table table = tables[i]; table.setLogger(logger); if (table.isImport()) { JCoTable tbl = table.getJCOTable(list); Object o = context.getObject(table.Source_field); logger.config( "transfer import table " + table.Name + " from '" + table.Source_field + "':" + o); if (o instanceof CompositeMap) table.fillJCOTable(tbl, (CompositeMap) context); } } } // Call the remote system and retrieve return value logger.config("call function " + function); function.execute(destination); if (parameters != null) { for (int i = 0; i < parameters.length; i++) { Parameter param = parameters[i]; if (param.Return_field != null) { if (target == null) throw new ConfigurationError( "<jco-invoke>:must set 'return_target' attribute if there is return field"); String vl = output.getString(param.Name); if (vl == null && !param.Nullable) throw new IllegalArgumentException( "jco-invoke: return field " + param.Name + " is null"); String f = TextParser.parse(param.Return_field, context); target.putObject(f, vl); logger.config("return: " + param.Name + "=" + vl + " -> " + f); } } } if (structures != null) { for (int i = 0; i < structures.length; i++) { Structure structure = structures[i]; structure.setLogger(logger); if (structure.isImport()) continue; if (structure.Target == null) throw new ConfigurationError( "Must set 'target' attribute for Structures " + structure.Name); JCoStructure stc = structure.getJCOStructure(output); CompositeMap result = (CompositeMap) context.getObject(structure.Target); if (result == null) result = context.createChildByTag(structure.Target); structure.fillCompositeMap(stc, result); } } // Get export tables if (tables != null) { JCoParameterList list = function.getTableParameterList(); if (list == null) throw new IllegalArgumentException("Function '" + function + "' doesn't return tables"); for (int i = 0; i < tables.length; i++) { Table table = tables[i]; if (table.isImport()) continue; if (table.Target == null) throw new ConfigurationError("Must set 'target' attribute for table " + table.Name); table.setLogger(logger); JCoTable records = table.getJCOTable(list); // Fetch as CompositeMap CompositeMap result = (CompositeMap) context.getObject(table.Target); if (result == null) result = context.createChildByTag(table.Target); table.fillCompositeMap(records, result); int rc = 0; if (result.getChilds() != null) rc = result.getChilds().size(); logger.config( "loading export table " + table.Name + " into path '" + table.Target + "', total " + rc + " record(s)"); } } }