001: /**********************************************************************
002: Copyright (c) 2007 Thomas Marti and others. All rights reserved.
003: Licensed under the Apache License, Version 2.0 (the "License");
004: you may not use this file except in compliance with the License.
005: You may obtain a copy of the License at
006:
007: http://www.apache.org/licenses/LICENSE-2.0
008:
009: Unless required by applicable law or agreed to in writing, software
010: distributed under the License is distributed on an "AS IS" BASIS,
011: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: See the License for the specific language governing permissions and
013: limitations under the License.
014:
015: Contributors:
016: ...
017: **********************************************************************/package org.jpox.store.mapping;
018:
019: import java.awt.geom.QuadCurve2D;
020:
021: import org.jpox.ClassLoaderResolver;
022: import org.jpox.ClassNameConstants;
023: import org.jpox.ObjectManager;
024: import org.jpox.metadata.AbstractMemberMetaData;
025: import org.jpox.store.DatastoreAdapter;
026: import org.jpox.store.DatastoreContainerObject;
027: import org.jpox.store.expression.LogicSetExpression;
028: import org.jpox.store.expression.QueryExpression;
029: import org.jpox.store.expression.ScalarExpression;
030:
031: /**
032: * Mapping for java.awt.geom.QuadCurve2D.Float, maps the x1, y1, ctrlx, ctrly, x2 and y2 values to float-precision datastore fields.
033: *
034: * @version $Revision: 1.20 $
035: */
036: public class QuadCurve2dFloatMapping extends SingleFieldMultiMapping {
037:
038: private static final QuadCurve2D.Float sampleValue = new QuadCurve2D.Float(
039: 0, 0, 1, 1, 2, 0);
040:
041: /* (non-Javadoc)
042: * @see org.jpox.store.mapping.JavaTypeMapping#initialize()
043: */
044: public void initialize(DatastoreAdapter dba,
045: AbstractMemberMetaData fmd,
046: DatastoreContainerObject container, ClassLoaderResolver clr) {
047: super .initialize(dba, fmd, container, clr);
048:
049: addDatastoreField(ClassNameConstants.FLOAT); // X1
050: addDatastoreField(ClassNameConstants.FLOAT); // Y1
051: addDatastoreField(ClassNameConstants.FLOAT); // CtrlX
052: addDatastoreField(ClassNameConstants.FLOAT); // CtrlY
053: addDatastoreField(ClassNameConstants.FLOAT); // X2
054: addDatastoreField(ClassNameConstants.FLOAT); // Y2
055: }
056:
057: /* (non-Javadoc)
058: * @see org.jpox.store.mapping.JavaTypeMapping#getJavaType()
059: */
060: public Class getJavaType() {
061: return QuadCurve2D.Float.class;
062: }
063:
064: /* (non-Javadoc)
065: * @see org.jpox.store.mapping.JavaTypeMapping#getSampleValue()
066: */
067: public Object getSampleValue(ClassLoaderResolver clr) {
068: return sampleValue;
069: }
070:
071: /* (non-Javadoc)
072: * @see org.jpox.store.mapping.JavaTypeMapping#setObject(org.jpox.ObjectManager, java.lang.Object, int[], java.lang.Object)
073: */
074: public void setObject(ObjectManager om, Object preparedStatement,
075: int[] exprIndex, Object value) {
076: QuadCurve2D.Float line = (QuadCurve2D.Float) value;
077: if (line == null) {
078: for (int i = 0; i < exprIndex.length; i++) {
079: getDataStoreMapping(i).setObject(preparedStatement,
080: exprIndex[i], null);
081: }
082: } else {
083: getDataStoreMapping(0).setFloat(preparedStatement,
084: exprIndex[0], line.x1);
085: getDataStoreMapping(1).setFloat(preparedStatement,
086: exprIndex[1], line.y1);
087: getDataStoreMapping(2).setFloat(preparedStatement,
088: exprIndex[2], line.ctrlx);
089: getDataStoreMapping(3).setFloat(preparedStatement,
090: exprIndex[3], line.ctrly);
091: getDataStoreMapping(4).setFloat(preparedStatement,
092: exprIndex[4], line.x2);
093: getDataStoreMapping(5).setFloat(preparedStatement,
094: exprIndex[5], line.y2);
095: }
096: }
097:
098: /* (non-Javadoc)
099: * @see org.jpox.store.mapping.JavaTypeMapping#getObject(org.jpox.ObjectManager, java.lang.Object, int[])
100: */
101: public Object getObject(ObjectManager om, Object resultSet,
102: int[] exprIndex) {
103: // Check for null entries
104: if (getDataStoreMapping(0).getObject(resultSet, exprIndex[0]) == null) {
105: return null;
106: }
107:
108: float x1 = getDataStoreMapping(0).getFloat(resultSet,
109: exprIndex[0]);
110: float y1 = getDataStoreMapping(1).getFloat(resultSet,
111: exprIndex[1]);
112: float ctrlx = getDataStoreMapping(2).getFloat(resultSet,
113: exprIndex[2]);
114: float ctrly = getDataStoreMapping(3).getFloat(resultSet,
115: exprIndex[3]);
116: float x2 = getDataStoreMapping(4).getFloat(resultSet,
117: exprIndex[5]);
118: float y2 = getDataStoreMapping(5).getFloat(resultSet,
119: exprIndex[6]);
120: return new QuadCurve2D.Float(x1, y1, ctrlx, ctrly, x2, y2);
121: }
122:
123: // --------------------------------- JDOQL Query Methods -------------------------------------------
124:
125: /* (non-Javadoc)
126: * @see org.jpox.store.mapping.JavaTypeMapping#newLiteral(org.jpox.store.query.QueryStatement, java.lang.Object)
127: */
128: public ScalarExpression newLiteral(QueryExpression qs, Object value) {
129: return null;
130: }
131:
132: /* (non-Javadoc)
133: * @see org.jpox.store.mapping.JavaTypeMapping#newScalarExpression(org.jpox.store.query.QueryStatement, org.jpox.store.expression.TableExpression)
134: */
135: public ScalarExpression newScalarExpression(QueryExpression qs,
136: LogicSetExpression te) {
137: return null;
138: }
139: }
|