private boolean isNullIdField( XmlObject field ) { return field.getName().getLocalPart().equalsIgnoreCase( "ID" ) && field.getValue() == null; }
public String getRecordValue( SObject con, String fieldname ) throws KettleException { String[] fieldHierarchy = fieldname.split( "\\." ); if ( con == null ) { return null; } else { XmlObject element = getMessageElementForHierarchy( con, fieldHierarchy ); if ( element != null ) { Object object = element.getValue(); if ( object != null ) { if ( object instanceof QueryResult ) { return buildJsonQueryResult( (QueryResult) object ); } return String.valueOf( object ); } else { return (String) element.getValue(); } } } return null; }
@SuppressWarnings( "unchecked" ) private JSONObject buildJSONSObject( SObject sobject ) { JSONObject jsonObject = new JSONObject(); for ( XmlObject element : getChildren( sobject ) ) { Object object = element.getValue(); if ( object != null && object instanceof SObject ) { jsonObject.put( element.getName(), buildJSONSObject( (SObject) object ) ); } else { jsonObject.put( element.getName(), element.getValue() ); } } return jsonObject; }
void setFieldInSObject( SObject sobjPass, XmlObject element ) { Iterator<XmlObject> children = element.getChildren(); String name = element.getName().getLocalPart(); if ( !children.hasNext() ) { sobjPass.setSObjectField( name, element.getValue() ); } else { SObject child = new SObject(); child.setName( new QName( name ) ); while ( children.hasNext() ) { setFieldInSObject( child, children.next() ); } sobjPass.setSObjectField( name, child ); } }
void addFields( String prefix, Set<String> fieldNames, XmlObject field ) { //Salesforce SOAP Api sends IDs always in the response, even if we don't request it in SOQL query and //the id's value is null in this case. So, do not add this Id to the fields list if ( isNullIdField( field ) ) { return; } String fieldname = prefix + field.getName().getLocalPart(); if ( field instanceof SObject ) { SObject sobject = (SObject) field; for ( XmlObject element : SalesforceConnection.getChildren( sobject ) ) { addFields( fieldname + ".", fieldNames, element ); } } else { addField( fieldname, fieldNames, (String) field.getValue() ); } }
sobjPass.setSObjectField( element.getName().getLocalPart(), element.getValue() );
if ( updatefields.size() > 0 ) { for ( XmlObject element : updatefields ) { sobjPass.setSObjectField( element.getName().getLocalPart(), element.getValue() );
@Override public String[] getFieldsToNull() { Iterator<XmlObject> it = getChildren("fieldsToNull"); ArrayList<String> result = new ArrayList<String>(); while(it.hasNext()) { result.add((String)it.next().getValue()); } return (String[]) result.toArray(new String[0]); }
private void setElementValueInColumn(int columnIndex, Object value, Object[] row) { if(value instanceof XmlObject) { XmlObject element = (XmlObject)value; if (element.hasChildren()) { row[columnIndex] = element.getChildren().next().getValue(); } else { row[columnIndex] = element.getValue(); } } else { row[columnIndex] = value; } }
private List<List<Object>> loadBatch(QueryResult queryResult) { List<List<Object>> batch = new ArrayList<List<Object>>(); for(SObject sObject : queryResult.getRecords()) { Iterator<XmlObject> fields = sObject.getChildren(); List<Object> row = new ArrayList<Object>(); while (fields.hasNext()) { XmlObject elem = fields.next(); if (elem.getName().getLocalPart().equals("type")) { //$NON-NLS-1$ continue; } Object value = elem.getValue(); row.add(value); } batch.add(row); } return batch; }
public Object getField(String name) { //TODO: optimize XmlObject item = findField(name); Object result = null; if (item != null) { if (item.hasChildren()) { result = item; } else { result = item.getValue(); } } return result; }
public Object getField(String name) { //TODO: optimize XmlObject item = findField(name); Object result = null; if (item != null) { if (item.hasChildren()) { result = item; } else { result = item.getValue(); } } return result; }
/** * TODO: the logic here should be aware of xsi:type information and use a standard conversion * library. Conversion to teiid types should then be a secondary effort - and will be automatically handled above here. */ private Object getCellDatum(String name, Class<?> type, XmlObject elem) throws TranslatorException { if(!name.equals(elem.getName().getLocalPart())) { throw new TranslatorException(SalesForcePlugin.Util.getString("SalesforceQueryExecutionImpl.column.mismatch1") + name + SalesForcePlugin.Util.getString("SalesforceQueryExecutionImpl.column.mismatch2") + elem.getName().getLocalPart()); //$NON-NLS-1$ //$NON-NLS-2$ } Object value = elem.getValue(); return convertValue(type, value); }
/** * Puts parsed values into value map by column names or complex column names.<br/> * For <b>Parent-to-Child</b> relation stores duplicates to grant a possibility<br/> * to get values by such column names in child table: * <code>Contact.Name, Contact.Account.Name</code> * * @param prefixName - name to be appended to column name. * @param xo - XML object that contains column value. */ private void placeValueInFieldMap(String prefixName, XmlObject xo) { Object value = xo.getValue(); if (value == null || "".equals(value)) { return; } String columnName = null; if (prefixName != null && prefixName.length() > 0) { columnName = prefixName + schema.getProp(SalesforceSchemaConstants.COLUMNNAME_DELIMTER) + xo.getName().getLocalPart(); } else { columnName = xo.getName().getLocalPart(); } if (valueMap.get(columnName) == null) { valueMap.put(columnName, formatIfNecessary(value, columnName)); } else { if (!columnName.equals(xo.getName().getLocalPart())) { valueMap.put(columnName, valueMap.get(columnName) + schema.getProp(SalesforceSchemaConstants.VALUE_DELIMITER) + formatIfNecessary(value, columnName)); } } }
/** * Puts parsed values into value map by column names or complex column names.<br/> * For <b>Parent-to-Child</b> relation stores duplicates to grant a possibility<br/> * to get values by such column names in child table: * <code>Contact.Name, Contact.Account.Name</code> * * @param prefixName - name to be appended to column name. * @param xo - XML object that contains column value. */ private void placeValueInFieldMap(String prefixName, XmlObject xo) { Object value = xo.getValue(); if (value == null || "".equals(value)) { return; } String columnName = null; if (prefixName != null && prefixName.length() > 0) { columnName = prefixName + schema.getProp(SalesforceSchemaConstants.COLUMNNAME_DELIMTER) + xo.getName().getLocalPart(); } else { columnName = xo.getName().getLocalPart(); } if (valueMap.get(columnName) == null) { valueMap.put(columnName, formatIfNecessary(value, columnName)); } else { if (!columnName.equals(xo.getName().getLocalPart())) { valueMap.put(columnName, valueMap.get(columnName) + schema.getProp(SalesforceSchemaConstants.VALUE_DELIMITER) + formatIfNecessary(value, columnName)); } } }
Object value = xo.getValue(); if (value == null || "".equals(value)) { return;
typeName = xmlObject.getValue().toString(); continue;
typeName = xmlObject.getValue().toString(); continue;