public IDataPointer[] retrieveExternalDataPointer(IAnswerData data)
        {
            IEnumerator en = additionalSerializers.GetEnumerator();

            while (en.MoveNext())
            {
                IAnswerDataSerializer serializer = (IAnswerDataSerializer)en.Current;
                Boolean contains = serializer.containsExternalData(data);
                if (contains != null)
                {
                    return(serializer.retrieveExternalDataPointer(data));
                }
            }
            if (data is PointerAnswerData)
            {
                IDataPointer[] pointer = new IDataPointer[1];
                pointer[0] = (IDataPointer)((PointerAnswerData)data).getValue();
                return(pointer);
            }
            else if (data is MultiPointerAnswerData)
            {
                return((IDataPointer[])((MultiPointerAnswerData)data).Value);
            }
            //This shouldn't have been called.
            return(null);
        }
        public Object serializeAnswerData(IAnswerData data, int dataType)
        {
            // First, we want to go through the additional serializers, as they should
            // take priority to the default serializations
            IEnumerator en = additionalSerializers.GetEnumerator();

            while (en.MoveNext())
            {
                IAnswerDataSerializer serializer = (IAnswerDataSerializer)en.Current;
                if (serializer.canSerialize(data))
                {
                    return(serializer.serializeAnswerData(data, dataType));
                }
            }
            //Defaults
            Object result = serializeAnswerData(data);

            return(result);
        }
        /*
         * (non-Javadoc)
         * @see org.javarosa.core.model.IAnswerDataSerializer#containsExternalData(org.javarosa.core.model.data.IAnswerData)
         */
        public Boolean containsExternalData(IAnswerData data)
        {
            //First check for registered serializers to identify whether
            //they override this one.
            IEnumerator en = additionalSerializers.GetEnumerator();

            while (en.MoveNext())
            {
                IAnswerDataSerializer serializer = (IAnswerDataSerializer)en.Current;
                Boolean contains = serializer.containsExternalData(data);
                if (contains != null)
                {
                    return(contains);
                }
            }
            if (data is PointerAnswerData ||
                data is MultiPointerAnswerData)
            {
                return(true);
            }
            return(false);
        }
Exemple #4
0
 public void setAnswerDataSerializer(IAnswerDataSerializer ads)
 {
     this.serializer = ads;
 }
 public void registerAnswerSerializer(IAnswerDataSerializer ads)
 {
     additionalSerializers.Add(ads);
 }