001package org.andromda.cartridges.ejb3.metafacades;
002
003import org.andromda.cartridges.ejb3.EJB3Globals;
004import org.andromda.cartridges.ejb3.EJB3Profile;
005import org.andromda.metafacades.uml.AttributeFacade;
006import org.andromda.metafacades.uml.ClassifierFacade;
007import org.apache.commons.lang.StringUtils;
008
009/**
010 * MetafacadeLogic implementation for org.andromda.cartridges.ejb3.metafacades.EJB3FinderMethodArgumentFacade.
011 *
012 * @see EJB3FinderMethodArgumentFacade
013 */
014public class EJB3FinderMethodArgumentFacadeLogicImpl
015    extends EJB3FinderMethodArgumentFacadeLogic
016{
017    private static final long serialVersionUID = 34L;
018    /**
019     * @param metaObject
020     * @param context
021     */
022    public EJB3FinderMethodArgumentFacadeLogicImpl(final Object metaObject, final String context)
023    {
024        super (metaObject, context);
025    }
026
027    /**
028     * @see EJB3FinderMethodArgumentFacade#getTemporalType()
029     */
030    @Override
031    protected String handleGetTemporalType()
032    {
033        String temporalType =
034            (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_PERSISTENCE_TEMPORAL_TYPE);
035        if (StringUtils.isBlank(temporalType))
036        {
037            ClassifierFacade classifier = this.getType();
038            if (classifier != null)
039            {
040                if (!classifier.isPrimitive())
041                {
042                    if (classifier.isDateType())
043                    {
044                        temporalType = EJB3Globals.TEMPORAL_TYPE_DATE;
045                    }
046                    else if (classifier.isTimeType())
047                    {
048                        temporalType = EJB3Globals.TEMPORAL_TYPE_TIME;
049                    }
050                    else if ("Timestamp".equals(classifier.getName()))
051                    {
052                        temporalType = EJB3Globals.TEMPORAL_TYPE_TIMESTAMP;
053                    }
054                }
055            }
056        }
057        return temporalType;
058    }
059
060    /**
061     * @see EJB3FinderMethodArgumentFacadeLogic#handleIsFirstResult()
062     */
063    @Override
064    protected boolean handleIsFirstResult()
065    {
066        return this.hasStereotype(EJB3Profile.STEREOTYPE_FINDER_RESULT_TYPE_FIRST);
067    }
068
069    /**
070     * @see EJB3FinderMethodArgumentFacadeLogic#handleIsMaxResults()
071     */
072    @Override
073    protected boolean handleIsMaxResults()
074    {
075        return this.hasStereotype(EJB3Profile.STEREOTYPE_FINDER_RESULT_TYPE_MAX);
076    }
077
078    /**
079     * @see EJB3FinderMethodArgumentFacadeLogic#handleIsEnumerationTypeOrdinal()
080     */
081    @Override
082    protected boolean handleIsEnumerationTypeOrdinal()
083    {
084        boolean ordinalType = false;
085        if (this.getType().isEnumeration())
086        {
087            AttributeFacade literal = this.getType().getAttributes().iterator().next();
088            if (!literal.getType().isStringType())
089            {
090                ordinalType = true;
091            }
092        }
093        return ordinalType;
094    }
095
096    /**
097     * @see EJB3FinderMethodArgumentFacadeLogic#handleIsEnumerationTypeString()
098     */
099    @Override
100    protected boolean handleIsEnumerationTypeString()
101    {
102        boolean stringType = false;
103        if (this.getType().isEnumeration())
104        {
105            AttributeFacade literal = this.getType().getAttributes().iterator().next();
106            if (literal.getType().isStringType())
107            {
108                stringType = true;
109            }
110        }
111        return stringType;
112    }
113}