public HapiField(final Type type) {
this.value = PipeParser.encode(type, EncodingCharacters.defaultInstance());
final List<HL7Component> componentList = new ArrayList<>();
if (type instanceof Composite) {
final Composite composite = (Composite) type;
for (final Type component : composite.getComponents()) {
componentList.add(new HapiField(component));
}
}
final ExtraComponents extra = type.getExtraComponents();
if (extra != null && extra.numComponents() > 0) {
final String singleFieldValue;
if (type instanceof Primitive) {
singleFieldValue = ((Primitive) type).getValue();
} else {
singleFieldValue = this.value;
}
componentList.add(new SingleValueField(singleFieldValue));
for (int i = 0; i < extra.numComponents(); i++) {
final Varies varies = extra.getComponent(i);
componentList.add(new HapiField(varies));
}
}
this.components = Collections.unmodifiableList(componentList);
}
public HapiField(final Type type) {
this.value = PipeParser.encode(type, EncodingCharacters.defaultInstance());
final List<HL7Component> componentList = new ArrayList<>();
if (type instanceof Composite) {
final Composite composite = (Composite) type;
for (final Type component : composite.getComponents()) {
componentList.add(new HapiField(component));
}
}
final ExtraComponents extra = type.getExtraComponents();
if (extra != null && extra.numComponents() > 0) {
final String singleFieldValue;
if (type instanceof Primitive) {
singleFieldValue = ((Primitive) type).getValue();
} else {
singleFieldValue = this.value;
}
componentList.add(new SingleValueField(singleFieldValue));
for (int i = 0; i < extra.numComponents(); i++) {
componentList.add(new HapiField(extra.getComponent(i)));
}
}
this.components = Collections.unmodifiableList(componentList);
}