throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain " + expectedComponents.size() + " components. Actually contains " + currentFieldComponents.length + " components. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain " + expectedComponents.size() + " components. Actually contains " + currentFieldComponents.length + " components. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain " + expectedComponents.size() + " components. Actually contains " + currentFieldComponents.length + " components. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain " + expectedComponents.size() + " components. Actually contains " + currentFieldComponents.length + " components. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
result.setName(toJavaName(field.getXmltag(), false)); result.setLowerBound(field.isRequired() ? 1 : 0); result.setUpperBound(1);
/** * Converting a {@link Field} to {@link EAttribute} Works only for * {@link Field} where {@link Field#getComponents()} is empty * * @param field * @return */ public static EAttribute fieldToEAttribute(Field field) { if (!field.getComponents().isEmpty()) { throw new IllegalArgumentException( "Can't convert field with components to " + "EAttribute, use fieldToEReference"); } EAttribute attr = EcoreFactory.eINSTANCE.createEAttribute(); attr.setName(toJavaName(field.getXmltag(), false)); attr.setLowerBound(field.isRequired() ? 1 : 0); attr.setUpperBound(1); if (field.getTypeClass() != null) { attr.setEType(toEType(field.getTypeClass())); } else { log.warn("Field " + field.getXmltag() + " has no type! Setting it's type to String"); attr.setEType(XMLTypePackage.Literals.STRING); } addMappingInformation(attr, field); annotateField(field, attr); return attr; }
Component expectedComponent = expectedComponents.get(i); mapComponent(componentMessageVal, expectedComponent, fieldIndex, i, segmentCode, expectedField.getXmltag()); throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain a value. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
Component expectedComponent = expectedComponents.get(i); mapComponent(componentMessageVal, expectedComponent, fieldIndex, i, segmentCode, expectedField.getXmltag()); throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain a value. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
Component expectedComponent = expectedComponents.get(i); mapComponent(componentMessageVal, expectedComponent, fieldIndex, i, segmentCode, expectedField.getXmltag()); throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain a value. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
Component expectedComponent = expectedComponents.get(i); mapComponent(componentMessageVal, expectedComponent, fieldIndex, i, segmentCode, expectedField.getXmltag()); throw new EDIParseException(edifactModel.getEdimap(), "Segment [" + segmentCode + "], field " + (fieldIndex + 1) + " (" + expectedField.getXmltag() + ") expected to contain a value. Currently at segment number " + segmentReader.getCurrentSegmentNumber() + ".", expectedField, segmentReader.getCurrentSegmentNumber(), segmentReader.getCurrentSegmentFields());
/** * Process all {@link org.milyn.edisax.model.internal.Field} in List and insert info into the {@link org.milyn.ejc.ClassModel}. * @param fields the {@link org.milyn.edisax.model.internal.Field} to process. * @param parent the JClass 'owning' the {@link org.milyn.edisax.model.internal.Field}. * @throws IllegalNameException when name found in a xmltag-attribute is a java keyword. */ private void processFields(List<Field> fields, BindingConfig parent) throws IllegalNameException { for (Field field : fields) { LOG.debug("Parsing field " + field.getXmltag()); pushNode(field); if (field.getComponents() != null && field.getComponents().size() > 0) { //Add class type. BindingConfig childBinding = createChildAndConnectWithParent(parent, field, 1, DelimiterType.FIELD); parent.getWireBindings().add(childBinding); // Now add the components to the field... processComponents(field.getComponents(), childBinding); } else { // Add primitive type. createAndAddSimpleType(field, parent, DelimiterType.FIELD); } popNode(); } collapseSingleFieldSegmentBinding(parent); if(parent.getWriteMethod() != null) { parent.getWriteMethod().addTerminatingDelimiter(DelimiterType.SEGMENT); parent.getWriteMethod().addFlush(); } }
/** * Creating a new {@link EClass} based on the information from {@link Field} * used in case we have a complex {@link Field} and we need to create a * class for it. * * @param field * @return */ private static EClass fieldToEClass(Field field) { String classifierName = toJavaName(field.getXmltag(), true); if (field.getNodeTypeRef() != null) { classifierName += "_" + field.getNodeTypeRef(); } EClass newClass = EcoreFactory.eINSTANCE.createEClass(); newClass.setName(classifierName); addMappingInformation(newClass, field); annotate(newClass, ANNOTATION_TYPE_KEY, SmooksMetadata.FIELD_TYPE); annotateValueNode(newClass, field); return newClass; }
private static Field copyField(Field oldField, boolean isMandatory) { Field field = new Field(); field.setName(oldField.getName()); field.setXmltag(XmlTagEncoder.encode(oldField.getXmltag())); field.setNodeTypeRef(oldField.getNodeTypeRef()); field.setDocumentation(oldField.getDocumentation()); field.setMaxLength(oldField.getMaxLength()); field.setMinLength(oldField.getMinLength()); field.setRequired(isMandatory); field.setTruncatable(true); field.setDataType(oldField.getDataType()); field.setDataTypeParameters(oldField.getTypeParameters()); field.getComponents().addAll(oldField.getComponents()); return field; }