001: package org.andromda.cartridges.spring.metafacades;
002:
003: import org.andromda.cartridges.spring.SpringProfile;
004: import org.apache.commons.lang.BooleanUtils;
005: import org.apache.commons.lang.ObjectUtils;
006: import org.apache.commons.lang.StringUtils;
007:
008: /**
009: * MetafacadeLogic implementation for org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute.
010: *
011: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute
012: */
013: public class SpringCriteriaAttributeLogicImpl extends
014: SpringCriteriaAttributeLogic {
015: public SpringCriteriaAttributeLogicImpl(Object metaObject,
016: String context) {
017: super (metaObject, context);
018: }
019:
020: /**
021: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getAttributeName()
022: */
023: protected java.lang.String handleGetAttributeName() {
024: // use the attribute name by default
025: String attributeName = getName();
026:
027: // if there is a tagged value, use it instead
028: Object value = findTaggedValue(SpringProfile.TAGGEDVALUE_HIBERNATE_CRITERIA_ATTRIBUTE);
029: if (value != null) {
030: attributeName = String.valueOf(value);
031: }
032:
033: return StringUtils.trimToEmpty(attributeName);
034: }
035:
036: /**
037: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getComparator()
038: */
039: protected java.lang.String handleGetComparator() {
040: String comparator = null;
041: Object value = findTaggedValue(SpringProfile.TAGGEDVALUE_HIBERNATE_CRITERIA_COMPARATOR);
042: if (value != null) {
043: comparator = String.valueOf(value);
044: }
045: return StringUtils.trimToEmpty(comparator);
046: }
047:
048: /**
049: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#isComparatorPresent()
050: */
051: protected boolean handleIsComparatorPresent() {
052: return !StringUtils.isEmpty(getComparator());
053: }
054:
055: /**
056: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getComparatorConstant()
057: */
058: protected String handleGetComparatorConstant() {
059: String comparator = getComparator();
060: String comparatorConstant = null;
061:
062: if (comparator != null) {
063: if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_LIKE
064: .equalsIgnoreCase(comparator)) {
065: comparatorConstant = "LIKE_COMPARATOR";
066: } else if (SpringProfile.TAGGEDVALUEVALUE_INSENSITIVE_LIKE_COMPARATOR
067: .equalsIgnoreCase(comparator)) {
068: comparatorConstant = "INSENSITIVE_LIKE_COMPARATOR";
069: } else if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_EQUAL
070: .equalsIgnoreCase(comparator)) {
071: comparatorConstant = "EQUAL_COMPARATOR";
072: } else if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_GREATER_OR_EQUAL
073: .equalsIgnoreCase(comparator)) {
074: comparatorConstant = "GREATER_THAN_OR_EQUAL_COMPARATOR";
075: } else if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_GREATER
076: .equalsIgnoreCase(comparator)) {
077: comparatorConstant = "GREATER_THAN_COMPARATOR";
078: } else if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_LESS_OR_EQUAL
079: .equalsIgnoreCase(comparator)) {
080: comparatorConstant = "LESS_THAN_OR_EQUAL_COMPARATOR";
081: } else if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_LESS
082: .equalsIgnoreCase(comparator)) {
083: comparatorConstant = "LESS_THAN_COMPARATOR";
084: } else if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_IN
085: .equalsIgnoreCase(comparator)) {
086: comparatorConstant = "IN_COMPARATOR";
087: } else if (SpringProfile.TAGGEDVALUEVALUE_COMPARATOR_NOT_EQUAL
088: .equalsIgnoreCase(comparator)) {
089: comparatorConstant = "NOT_EQUAL_COMPARATOR";
090: }
091: }
092: return comparatorConstant;
093: }
094:
095: /**
096: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#handleIsNullable()
097: */
098: protected boolean handleIsNullable() {
099: boolean result = false;
100: String value = StringUtils
101: .trimToEmpty((String) findTaggedValue(SpringProfile.TAGGEDVALUE_HIBERNATE_CRITERIA_NULLABLE));
102: if (!StringUtils.isEmpty(value)) {
103: result = BooleanUtils.toBoolean(value);
104: }
105: return result;
106: }
107:
108: /**
109: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#handleGetMatchMode()
110: */
111: protected String handleGetMatchMode() {
112: String matchMode = null;
113: Object value = findTaggedValue(SpringProfile.TAGGEDVALUE_HIBERNATE_CRITERIA_MATCHMODE);
114: if (value != null) {
115: matchMode = String.valueOf(value);
116: }
117: String result = StringUtils.trimToEmpty(matchMode);
118: return result;
119: }
120:
121: /**
122: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#handleGetMatchModeConstant()
123: */
124: protected String handleGetMatchModeConstant() {
125: String matchMode = getMatchMode();
126: String matchModeConstant = null;
127:
128: if (matchMode != null) {
129: if (matchMode
130: .equalsIgnoreCase(SpringProfile.TAGGEDVALUEVALUE_MATCHMODE_ANYWHERE)) {
131: matchModeConstant = "ANYWHERE";
132: } else if (matchMode
133: .equalsIgnoreCase(SpringProfile.TAGGEDVALUEVALUE_MATCHMODE_END)) {
134: matchModeConstant = "END";
135: } else if (matchMode
136: .equalsIgnoreCase(SpringProfile.TAGGEDVALUEVALUE_MATCHMODE_EXACT)) {
137: matchModeConstant = "EXACT";
138: } else if (matchMode
139: .equalsIgnoreCase(SpringProfile.TAGGEDVALUEVALUE_MATCHMODE_START)) {
140: matchModeConstant = "START";
141: }
142: }
143: return matchModeConstant;
144: }
145:
146: /**
147: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#handleIsMatchModePresent()
148: */
149: protected boolean handleIsMatchModePresent() {
150: return !StringUtils.isEmpty(getMatchMode());
151: }
152:
153: private static final String ORDER_UNSET = "ORDER_UNSET";
154:
155: /**
156: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#handleIsOrderable()
157: */
158: protected boolean handleIsOrderable() {
159: return !ORDER_UNSET.equals(getOrderDirection());
160: }
161:
162: /**
163: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#handleGetOrderDirection()
164: */
165: protected String handleGetOrderDirection() {
166: String result = ORDER_UNSET;
167: String value = StringUtils
168: .trimToEmpty((String) findTaggedValue(SpringProfile.TAGGEDVALUE_HIBERNATE_CRITERIA_ORDER_DIRECTION));
169: if (!StringUtils.isEmpty(value)) {
170: if (value
171: .equals(SpringProfile.TAGGEDVALUEVALUE_ORDER_ASCENDING)) {
172: result = "ORDER_ASC";
173: } else if (value
174: .equals(SpringProfile.TAGGEDVALUEVALUE_ORDER_DESCENDING)) {
175: result = "ORDER_DESC";
176: }
177: }
178: return result;
179: }
180:
181: /**
182: * Used for undefined states of the criteria ordering.
183: */
184: private static final int UNSET = -1;
185:
186: /**
187: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#handleGetOrderRelevance()
188: */
189: protected int handleGetOrderRelevance() {
190: int result = UNSET;
191: String value = StringUtils
192: .trimToEmpty((String) findTaggedValue(SpringProfile.TAGGEDVALUE_HIBERNATE_CRITERIA_ORDER_RELEVANCE));
193: if (!StringUtils.isEmpty(value)) {
194: result = Integer.parseInt(value);
195: }
196: return result;
197: }
198:
199: /**
200: * The default value for whether hibernate criteria arguments are case insensitive or not.
201: */
202: private static final String HIBERNATE_CRITERIA_QUERY_IGNORE_CASE = "hibernateCriteriaQueryIgnoreCase";
203:
204: /**
205: * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttributeLogic#isIgnoreCase()
206: */
207: protected boolean handleIsIgnoreCase() {
208: Object value = this
209: .findTaggedValue(SpringProfile.TAGGEDVALUE_HIBERNATE_CRITERIA_COMPARATOR_IGNORE_CASE);
210: if (value == null) {
211: value = this
212: .getConfiguredProperty(HIBERNATE_CRITERIA_QUERY_IGNORE_CASE);
213: }
214: return Boolean.valueOf(ObjectUtils.toString(value))
215: .booleanValue();
216: }
217: }
|