001 package org.trails.engine.encoders.abbreviator;
002
003 import org.apache.commons.collections.BidiMap;
004 import org.apache.commons.collections.bidimap.TreeBidiMap;
005 import org.trails.util.Utils;
006 import org.trails.descriptor.DescriptorService;
007 import org.trails.descriptor.IClassDescriptor;
008
009 /**
010 * This class is a Trails adaptation of Tapernate's DefaultAbbreviator
011 * <p/>
012 * Credits to James Carman.
013 */
014 public class DefaultAbbreviator implements EntityNameAbbreviator
015 {
016
017 private BidiMap abbreviationMap;
018 private DescriptorService descriptorService;
019
020 public String abbreviate(Class entityName)
021 {
022 return (String) abbreviationMap.get(entityName.getName());
023 }
024
025 public Class unabbreviate(String abbreviation)
026 {
027 return Utils.classForName((String) abbreviationMap.getKey(abbreviation)); //@todo check NPEs
028 }
029
030 public void initializeService()
031 {
032 abbreviationMap = new TreeBidiMap();
033 for (IClassDescriptor classDescriptor : descriptorService.getAllDescriptors())
034 {
035 abbreviationMap.put(classDescriptor.getType().getName(), classDescriptor.getType().getSimpleName());
036 }
037 }
038
039 public void setDescriptorService(DescriptorService descriptorService)
040 {
041 this.descriptorService = descriptorService;
042 }
043 }