|
From: Leandro R. S. C. <bas...@us...> - 2004-03-22 21:34:23
|
Update of /cvsroot/xingu/xingu/exintake/src/java/br/com/ibnetwork/xingu/exintake/model/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31708/exintake/src/java/br/com/ibnetwork/xingu/exintake/model/impl Added Files: IntakeModelImpl.java FieldNullImpl.java GroupDefaultImpl.java FieldDefaultImpl.java Log Message: adding Extensible input taker --- NEW FILE: FieldDefaultImpl.java --- package br.com.ibnetwork.xingu.exintake.model.impl; import java.util.List; import br.com.ibnetwork.xingu.exintake.model.Field; import br.com.ibnetwork.xingu.exintake.model.Group; /** * @author neto * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class FieldDefaultImpl implements Field { private Group group; private String name; private String type; private String defaultValue; public FieldDefaultImpl(Group group) { this.group = group; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#getName() */ public String getName() { return name; } /** * @param name */ public void setName(String name) { this.name = name; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Field#getFullName() */ public String getFullName() { return group.getKey() + Field.KEY_NAME_SEPARATOR + name; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#getKey() */ public String getType() { return type; } /** * @param name */ public void setType(String type) { this.type = type; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#getKey() */ public String getDefaultValue() { return defaultValue; } /** * @param name */ public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; } public String toString() { return "FieldDefaultImpl name("+name+") type("+type+") defaultValue("+defaultValue+") "; } } --- NEW FILE: IntakeModelImpl.java --- /* * Created on Dec 23, 2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package br.com.ibnetwork.xingu.exintake.model.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import br.com.ibnetwork.xingu.exintake.IntakeException; import br.com.ibnetwork.xingu.exintake.model.Group; import br.com.ibnetwork.xingu.exintake.model.IntakeModel; /** * @author neto * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class IntakeModelImpl implements IntakeModel { private Map groups = new HashMap(); private List groupNames = new ArrayList(); public void addGroup(Group newGroup) throws IntakeException { String groupName = newGroup.getName().toLowerCase(); if(groupNames.contains(groupName)) throw new IntakeException("This group["+groupName+"] is already present on this model"); groups.put(groupName,newGroup); groupNames.add(groupName); } public Group getGroupByName(String groupName) throws IntakeException { return (Group) groups.get(groupName); } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.IntakeModel#getGroupNames() */ public String[] getGroupNames() throws IntakeException { return (String[]) groupNames.toArray(new String[]{}); } } --- NEW FILE: FieldNullImpl.java --- package br.com.ibnetwork.xingu.exintake.model.impl; import br.com.ibnetwork.xingu.exintake.model.Field; /** * @author <a href="mailto:le...@ib...">Leandro Rodrigo Saad Cruz</a> * */ public class FieldNullImpl implements Field { /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Field#getName() */ public String getName() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Field#getFullName() */ public String getFullName() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Field#getType() */ public String getType() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Field#getDefaultValue() */ public String getDefaultValue() { // TODO Auto-generated method stub return null; } } --- NEW FILE: GroupDefaultImpl.java --- /* * Created on Dec 22, 2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package br.com.ibnetwork.xingu.exintake.model.impl; import java.lang.reflect.Proxy; import java.text.ParseException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.Composable; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.Converter; import br.com.ibnetwork.xingu.exintake.IntakeException; import br.com.ibnetwork.xingu.exintake.model.Field; import br.com.ibnetwork.xingu.exintake.model.Group; import br.com.ibnetwork.xingu.exintake.model.rule.RuleSet; import br.com.ibnetwork.xingu.exintake.model.rule.impl.FormatRule; import br.com.ibnetwork.xingu.factory.ObjectFactory; /** * @author neto * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class GroupDefaultImpl implements Group, Composable { private ObjectFactory factory; /* One Proxy instance per Field */ private List proxyList = new ArrayList(); private String key; private String name; private String mapToObject; public static Map convertionMap = new HashMap(); static { convertionMap.put("int",Integer.class); convertionMap.put("integer",Integer.class); convertionMap.put("boolean",Boolean.class); convertionMap.put("float",Float.class); convertionMap.put("double",Double.class); convertionMap.put("string",String.class); convertionMap.put("date",Date.class); convertionMap.put("long",Long.class); convertionMap.put("byte",Byte.class); convertionMap.put("short",Short.class); convertionMap.put("char",Character.class); } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#get(java.lang.String) */ public Field get(String fieldName) { for (Iterator iter = proxyList.iterator(); iter.hasNext();) { Field element = (Field) iter.next(); if(element.getName().equals(fieldName)) { return element; } } //TODO: disparar excecao do Intake throw new IllegalArgumentException("Field named ["+fieldName +"] not found"); } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#getFieldNames() */ public List getFieldNames() { List result = new ArrayList(); for (Iterator iter = proxyList.iterator(); iter.hasNext();) { Field element = (Field) iter.next(); result.add(element.getName()); } return result; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#getName() */ public String getName() { return name; } /** * @param name */ public void setName(String name) { if(name.indexOf(Field.KEY_NAME_SEPARATOR) >=0) { throw new IllegalArgumentException("Group names can't use " + Field.KEY_NAME_SEPARATOR); } this.name = name; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#getKey() */ public String getKey() { return key; } /** * @param name */ public void setKey(String key) { this.key = key; } public String toString() { return "GroupDefaultImpl name("+name+") key("+key+") mapTo("+mapToObject+")"; } /** * @return */ public String getMapToObject() { return mapToObject; } /** * @param string */ public void setMapToObject(String string) { mapToObject = string; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#addProxy(java.lang.reflect.Proxy) */ public void addProxy(Proxy proxy) { proxyList.add(proxy); } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#mapToObject(java.util.Map) */ public Object createObject(Map map) throws IntakeException { try { Object[] params = new Object[] {this,map}; String[] signature = new String[] {Group.class.getName(), Map.class.getName()}; Object bean = factory.getInstanceOf(mapToObject,params,signature); return bean; } catch (Exception e) { throw new IntakeException(e); } } /* (non-Javadoc) * @see org.apache.avalon.framework.component.Composable#compose(org.apache.avalon.framework.component.ComponentManager) */ public void compose(ComponentManager manager) throws ComponentException { factory = (ObjectFactory) manager.lookup(ObjectFactory.ROLE); } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#stripGroupKeyFromFullFieldName(java.lang.String) */ public String stripKeyFromFieldName(String fullFieldName) { int pos = fullFieldName.indexOf(Field.KEY_NAME_SEPARATOR) + 1; String stripped = fullFieldName.substring(pos); return stripped; } /* (non-Javadoc) * @see br.com.ibnetwork.xingu.exintake.model.Group#convert(java.lang.String, java.lang.String) */ public Object convert(String fieldName, String stringValue) { Field field = get(fieldName); String fieldType = field.getType(); Object result; if("Date".equalsIgnoreCase(fieldType)) { RuleSet ruleSet = (RuleSet) field; FormatRule rule = (FormatRule) ruleSet.getRuleByType(FormatRule.class); try { result = rule.parse(stringValue); } catch(ParseException e) { result = stringValue; } } else { Class clazz = (Class) convertionMap.get(fieldType.toLowerCase()); Converter converter = ConvertUtils.lookup(clazz); result = ConvertUtils.convert(stringValue,clazz); } return result; } } |