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 ); } }
public static XmlObject fromTemplateElement( String name, Object value, boolean setValue ) throws SOAPException { // Use the TEMPLATE org.w3c.dom.Element to create new Message Elements XmlObject me = new XmlObject(); if ( setValue ) { me.setValue( value ); } me.setName( new QName( name ) ); return me; }
private static XmlObject createForeignKeyElement( String type, String lookupField, String extIdName, Object extIdValue ) throws Exception { // Foreign key relationship to the object XmlObject me = fromTemplateElement( lookupField, null, false ); me.addField( "type", type ); me.addField( extIdName, extIdValue ); return me; }
public static XmlObject[] getChildren( SObject object ) { List<String> reservedFieldNames = Arrays.asList( "type", "fieldsToNull" ); if ( object == null ) { return null; } List<XmlObject> children = new ArrayList<>(); Iterator<XmlObject> iterator = object.getChildren(); while ( iterator.hasNext() ) { XmlObject child = iterator.next(); if ( child.getName().getNamespaceURI().equals( Constants.PARTNER_SOBJECT_NS ) && reservedFieldNames.contains( child.getName().getLocalPart() ) ) { continue; } children.add( child ); } if ( children.size() == 0 ) { return null; } return children.toArray( new XmlObject[children.size()] ); } }
Iterator<XmlObject> rel = sobject.getChildren(relationshipName); while (rel.hasNext()) { Iterator<XmlObject> subs = rel.next().getChildren("records"); Object o = valueOverride != null ? valueOverride : sobject.getField(column.getSelectFieldName()); if (o == null) return null; Calendar cal;
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; } }
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; }
@Override public void write(QName element, XmlOutputStream out, TypeMapper typeMapper) throws IOException { typeMapper.writeFieldXsiType(true); if (hasChildren()) { out.writeStartTag(element.getNamespaceURI(), element.getLocalPart()); for (XmlObject child : children) { child.write(child.getName(), out, typeMapper);
private void extactJoinResults(XmlObject node, List<Object[]> result) throws TranslatorException { Object val = node.getField(TYPE); if(val instanceof String) { extractValuesFromElement(node, result, (String)val); } else if (node.hasChildren()) { Iterator<XmlObject> children = node.getChildren(); while (children.hasNext()) { XmlObject item = children.next(); extactJoinResults(item, result); } } }
private XmlObject addOrSetField(String n, Object value, boolean set) { XmlObject child = null; if (value instanceof XmlObject) { child = (XmlObject) value; child.name = getQNameFor(n); children.add(child); } else { if (set) { child = findField(n); } if (child == null) { child = new XmlObject(getQNameFor(n), value); children.add(child); } else { child.setValue(value); } } return child; }
/** * @return the details associated with the field. You can find the fields to expect for * the given {@link #getExtendedErrorCode()} in the wsdl, or online documentation. */ @Override public Object getField(String name) { return super.getField(name); }
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; }
/** * Convenience method to read the value of a column out of an SObject. * @param rs XmlObject * @param columnName Name of the column * @return Value for the column for this row. */ private Object getResultObject(final XmlObject rs, String columnName) { if (rs == null || columnName == null) return null; int index = columnName.indexOf('.'); if (index > 0) { return getResultObject(rs.getChild(columnName.substring(0, index)), columnName.substring(index + 1)); } return rs.getField(columnName); } }
/** * evaluate the given xpath like expression. * eg xpath: "OpportunityContactRoles/records/Contact/LastName" this will list * all LastName * * @param xpath * @return */ public Iterator<XmlObject> evaluate(String xpath) { if (xpath == null) throw new NullPointerException("xpath can not be null"); ArrayList<XmlObject> parents = new ArrayList<XmlObject>(); ArrayList<XmlObject> nodes = new ArrayList<XmlObject>(); parents.add(this); String[] paths = xpath.split("/"); for (String path : paths) { nodes = new ArrayList<XmlObject>(); for (XmlObject parent : parents) { Iterator<XmlObject> it = parent.getChildren(path); while (it.hasNext()) nodes.add(it.next()); } if (nodes.size() == 0) { break; } else { parents = nodes; } } return nodes.iterator(); }
private void addProperty(PropertyDescriptor descriptor, ArrayList<XmlObject> result) { Object value; try { value = descriptor.getReadMethod().invoke(xmlizable); if (value instanceof XmlObject) { result.add((XmlObject)value); } else if (value instanceof XMLizable) { result.add(new XmlObjectWrapper((XMLizable)value)); } else if (value instanceof Object[]) { for (Object subValue : (Object[])value) { result.add(new XmlObject(getQNameFor(descriptor.getName()), subValue)); } } else { result.add(new XmlObject(getQNameFor(descriptor.getName()), value)); } } catch (IllegalAccessException e) { } catch (IllegalArgumentException e) { } catch (InvocationTargetException e) { } }
xmlObject.setField(fieldName, SalesforceRuntime.convertDateToCalendar((Date) valueToAdd)); } else { Schema.Field se = moduleSchema.getField(fieldName); if (datePattern != null && !datePattern.toString().isEmpty()) { if ("yyyy-MM-dd'T'HH:mm:ss'.000Z'".equals(datePattern)) { xmlObject.setField(fieldName, calendarCodec.deserialize((String) valueToAdd)); } else if ("yyyy-MM-dd".equals(datePattern)) { xmlObject.setField(fieldName, dateCodec.deserialize((String) valueToAdd)); } else { xmlObject.setField(fieldName, new Time((String) valueToAdd)); xmlObject.setField(fieldName, SalesforceAvroRegistry.get().getConverterFromString(se).convertToAvro((String) valueToAdd)); xmlObject.setField(fieldName, valueToAdd);
private List<Object[]> extractValuesFromElement(XmlObject sObject, List<Object[]> result, String sObjectName) throws TranslatorException { Object[] row = new Object[visitor.getSelectSymbolCount()]; for (int j = 0; j < visitor.getSelectSymbolCount(); j++) { //must be a column reference as we won't allow an agg over a join Column element = ((ColumnReference)visitor.getSelectSymbolMetadata(j)).getMetadataObject(); AbstractMetadataRecord table = element.getParent(); if(table.getSourceName().equals(sObjectName)) { XmlObject child = sObject.getChild(element.getSourceName()); Object cell = getCellDatum(element.getSourceName(), element.getJavaType(), child); setElementValueInColumn(j, cell, row); } } result.add(row); return result; }
@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; }