001: /**
002: * EasyBeans
003: * Copyright (C) 2006 Bull S.A.S.
004: * Contact: easybeans@ow2.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: ClassMapping.java 1970 2007-10-16 11:49:25Z benoitf $
023: * --------------------------------------------------------------------------
024: */package org.ow2.easybeans.xmlconfig.mapping;
025:
026: import java.util.HashMap;
027: import java.util.Map;
028:
029: /**
030: * Defines a mapping for a given class.
031: * @author Florent Benoit
032: */
033: public class ClassMapping extends AbsMapping {
034:
035: /**
036: * Association between a name(or alias) and an attribute mapping.
037: */
038: private Map<String, AttributeMapping> attributesMapping = null;
039:
040: /**
041: * The text of this element must be set on an attribute.
042: */
043: private String elementAttribute = null;
044:
045: /**
046: * @return the name of the attribute to use when finding a value inside this element.
047: */
048: public String getElementAttribute() {
049: return elementAttribute;
050: }
051:
052: /**
053: * Sets the name of the element attribute for this class.
054: * @param elementAttribute the value of the attribute to map the XML element.
055: */
056: public void setElementAttribute(final String elementAttribute) {
057: this .elementAttribute = elementAttribute;
058: }
059:
060: /**
061: * Build a default class mapping.
062: */
063: public ClassMapping() {
064: super ();
065: this .attributesMapping = new HashMap<String, AttributeMapping>();
066: }
067:
068: /**
069: * Add a given attribute mapping object.
070: * @param attributeMapping the given attribute.
071: */
072: public void addAttributeMapping(
073: final AttributeMapping attributeMapping) {
074: attributesMapping.put(attributeMapping.getName(),
075: attributeMapping);
076: // store alias too (if any)
077: if (attributeMapping.getAlias() != null) {
078: attributesMapping.put(attributeMapping.getAlias(),
079: attributeMapping);
080: }
081: }
082:
083: /**
084: * Gets the attribute mapping for the given attribute name.
085: * @param attributeName the given attribute name.
086: * @return the attribute mapping or null if not found.
087: */
088: public AttributeMapping getAttributeMapping(
089: final String attributeName) {
090: return attributesMapping.get(attributeName);
091: }
092:
093: /**
094: * Returns a string representation of the object.
095: * @return string representation
096: */
097: @Override
098: public String toString() {
099: StringBuilder sb = new StringBuilder();
100: // classname
101: sb.append(this .getClass().getName().substring(
102: this .getClass().getPackage().getName().length() + 1));
103: sb.append("[");
104: sb.append(super .toString());
105: sb.append(", attributes=");
106: sb.append(attributesMapping);
107: sb.append("]");
108:
109: return sb.toString();
110: }
111:
112: }
|