That's because in Java you cannot cast a Type[] into a ST[] (although you
can cast a Type into a ST).
There are some convenience methods in the superclass:

return getTypedField(1, new ST[0]);

// Alternatively use Arrays.copyOf

// instead of return (ST[]) super.getField(1);


return getTypedField(2, 0);
// instead of return (NM) super.getField(1, 0);

cheers
Christian

2015-10-26 18:53 GMT+01:00 Davies, Brian <brian.dav...@mckesson.com>:

> I have the following 2 classes which seem to conform to the expected setup
> for a custom model. I stripped the jars referenced in the project to just
> the log4j and slf4j and the hapi-structures-v25-2.2.jar and
> hapi-base-2.2.jar. It is more or less the same code as in the examples. I
> tried doing this because I was getting a similar exception the core project
> so I decided to strip it down to the bare minimum. I am also using JDK.1.7.
> Any help would be most welcome.
>
>
>
> However, I am getting a ClassCastException :
>
>
>
> log4j:WARN Please initialize the log4j system properly.
>
> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
> more info.
>
> Fido
>
> Fred
>
> 13
>
> Exception in thread "main" *java.lang.ClassCastException*:
> [Lca.uhn.hl7v2.model.Type; cannot be cast to [
> Lca.uhn.hl7v2.model.v25.datatype.ST;
>
>        at com.msh.bgapp.hl7.custommodel.v25.segment.ZPI.getPetName(
> *ZPI.java:49*)
>
>        at com.msh.bgapp.hl7.TestCustomModel.main(*TestCustomModel.java:42*
> )
>
>
>
>
>
> package com.msh.bgapp.hl7.custommodel.v25.segment;
>
>
>
> import ca.uhn.hl7v2.HL7Exception;
>
> import ca.uhn.hl7v2.model.AbstractSegment;
>
> import ca.uhn.hl7v2.model.Group;
>
> import ca.uhn.hl7v2.model.Message;
>
> import ca.uhn.hl7v2.model.Type;
>
> import ca.uhn.hl7v2.model.v25.datatype.NM;
>
> import ca.uhn.hl7v2.model.v25.datatype.ST;
>
> import ca.uhn.hl7v2.parser.ModelClassFactory;
>
>
>
>
>
>
>
> public class ZPI extends AbstractSegment {
>
>        private static final long serialVersionUID = 1L;
>
>
>
>          public ZPI(Group parent, ModelClassFactory modelClassFactory)
>
>            throws HL7Exception
>
>          {
>
>            super(parent, modelClassFactory);
>
>
>
>            Message message = getMessage();
>
>
>
>            Class<? extends Type> type = ST.class;
>
>            boolean required = true;
>
>            int maxReps = 0;
>
>            int maxLength = 100;
>
>            Object[] constructorArgs = { message };
>
>            String fieldName = "Pet Name(s)";
>
>            add(type, required, maxReps, maxLength, constructorArgs,
> fieldName);
>
>
>
>            type = NM.class;
>
>            required = false;
>
>            maxReps = 1;
>
>            maxLength = 4;
>
>            constructorArgs = new Object[] { message };
>
>            fieldName = "Shoe Size";
>
>            add(type, required, maxReps, maxLength, constructorArgs,
> fieldName);
>
>          }
>
>
>
>          protected Type createNewTypeWithoutReflection(int field)
>
>          {
>
>            return null;
>
>          }
>
>
>
>          public ST[] getPetName()
>
>            throws HL7Exception
>
>          {
>
>            return (ST[])super.getField(1);
>
>          }
>
>
>
>          public NM getShoeSize()
>
>            throws HL7Exception
>
>          {
>
>            return (NM)super.getField(1, 0);
>
>          }
>
> }
>
>
>
>
>
> *package* com.msh.bgapp.hl7;
>
>
>
> *import* com.msh.bgapp.hl7.custommodel.v25.message.ZDT_A01;
>
> *import* com.msh.bgapp.hl7.custommodel.v25.segment.ZPI;
>
> *import* ca.uhn.hl7v2.HL7Exception;
>
> *import* ca.uhn.hl7v2.model.Segment;
>
> *import* ca.uhn.hl7v2.model.v25.message.ADT_A01;
>
> *import* ca.uhn.hl7v2.parser.CustomModelClassFactory;
>
> *import* ca.uhn.hl7v2.parser.ModelClassFactory;
>
> *import* ca.uhn.hl7v2.parser.Parser;
>
> *import* ca.uhn.hl7v2.parser.PipeParser;
>
>
>
> *public* *class* TestCustomModel {
>
>        *public* *static* *void* main(String[] args)
>
>                  *throws* HL7Exception
>
>                {
>
>                  String messageText = 
> "MSH|^~\\&|IRIS|SANTER|AMB_R|SANTER|200803051508||ADT^A01|263206|P|2.5\rEVN||200803051509||||200803031508\rPID|||5520255^^^PK^PK~ZZZZZZ83M64Z148R^^^CF^CF~ZZZZZZ83M64Z148R^^^SSN^SSN^^20070103^99991231~^^^^TEAM||ZZZ^ZZZ||19830824|F||||||||||||||||||||||N\rZPI|Fido~Fred|13\rPV1||I|6402DH^^^^^^^^MED.
> 1 - ONCOLOGIA^^OSPEDALE MAGGIORE DI LODI&LODI|||^^^^^^^^^^OSPEDALE MAGGIORE
> DI
> LODI&LODI|13936^TEST^TEST||||||||||5068^TEST2^TEST2||2008003369||||||||||||||||||||||||||200803031508\rPR1|1||1111^Mastoplastica|Protesi|20090224|02|"
> ;
>
>
>
>                  ADT_A01 message = (ADT_A01)*new* PipeParser().parse(
> messageText);
>
>
>
>                  Segment zpiGenericSegment = (Segment)message.get("ZPI");
>
>
>
>                  String firstPetName = zpiGenericSegment.getField(1,
> 0).encode();
>
>                  String secondPetName = zpiGenericSegment.getField(1,
> 1).encode();
>
>                  System.*out*.println(firstPetName);
>
>                  System.*out*.println(secondPetName);
>
>
>
>                  String shoeSize = zpiGenericSegment.getField(2,
> 0).encode();
>
>                  System.*out*.println(shoeSize);
>
>
>
>                  ModelClassFactory cmf = *new* CustomModelClassFactory(
> "com.msh.bgapp.hl7.custommodel");
>
>
>
>                  Parser parser = *new* PipeParser(cmf);
>
>
>
>                  messageText = 
> "MSH|^~\\&|IRIS|SANTER|AMB_R|SANTER|200803051508||ZDT^A01|263206|P|2.5\rEVN||200803051509||||200803031508\rPID|||5520255^^^PK^PK~ZZZZZZ83M64Z148R^^^CF^CF~ZZZZZZ83M64Z148R^^^SSN^SSN^^20070103^99991231~^^^^TEAM||ZZZ^ZZZ||19830824|F||||||||||||||||||||||N\rZPI|Fido~Fred|13\rPV1||I|6402DH^^^^^^^^MED.
> 1 - ONCOLOGIA^^OSPEDALE MAGGIORE DI LODI&LODI|||^^^^^^^^^^OSPEDALE MAGGIORE
> DI
> LODI&LODI|13936^TEST^TEST||||||||||5068^TEST2^TEST2||2008003369||||||||||||||||||||||||||200803031508\rPR1|1||1111^Mastoplastica|Protesi|20090224|02|"
> ;
>
>
>
>                  ZDT_A01 zdtA01 = (ZDT_A01)parser.parse(messageText);
>
>
>
>                  ZPI zpi = zdtA01.getZPI();
>
>
>
>                  System.*out*.println(zpi.getPetName()[0].encode());
>
>                  System.*out*.println(zpi.getPetName()[1].encode());
>
>                  System.*out*.println(zpi.getShoeSize().encode());
>
>                }
>
> }
>
>
>
> package com.msh.bgapp.hl7.custommodel.v25.message;
>
>
>
>
>
> import ca.uhn.hl7v2.HL7Exception;
>
> import ca.uhn.hl7v2.model.v25.message.ADT_A01;
>
> import ca.uhn.hl7v2.parser.ModelClassFactory;
>
> import java.util.Arrays;
>
>
>
> import com.msh.bgapp.hl7.custommodel.v25.segment.ZPI;
>
>
>
>
>
> public class ZDT_A01 extends ADT_A01 {
>
>
>
>        private static final long serialVersionUID = -2504830694193741286L;
>
>
>
>        public ZDT_A01(ModelClassFactory factory)
>
>                  throws HL7Exception
>
>                {
>
>                  super(factory);
>
>
>
>                  String[] segmentNames = getNames();
>
>                  int indexOfPid =
> Arrays.asList(segmentNames).indexOf("PID");
>
>
>
>                  Class<ZPI> type = ZPI.class;
>
>                  boolean required = true;
>
>                  boolean repeating = false;
>
>                  int index = indexOfPid + 1;
>
>
>
>                  add(type, required, repeating, index);
>
>                }
>
>
>
>                public ZPI getZPI()
>
>                  throws HL7Exception
>
>                {
>
>                  return (ZPI)get("ZPI");
>
>                }
>
> }
>
>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> Hl7api-devel mailing list
> Hl7api-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/hl7api-devel
>
>
------------------------------------------------------------------------------
Presto, an open source distributed SQL query engine for big data, initially
developed by Facebook, enables you to easily query your data on Hadoop in a 
more interactive manner. Teradata is also now providing full enterprise
support for Presto. Download a free open source copy now.
http://pubads.g.doubleclick.net/gampad/clk?id=250295911&iu=/4140
_______________________________________________
Hl7api-devel mailing list
Hl7api-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hl7api-devel

Reply via email to