Assembla home | Assembla project page
 

root/core/trunk/src/main/java/org/restafarian/core/service/LookupTableService.java

Revision 271, 5.0 kB (checked in by restamon, 8 months ago)

New look-up table service

Line 
1 package org.restafarian.core.service;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6 import java.util.Map;
7 import java.util.TreeMap;
8
9 import org.apache.commons.lang.StringUtils;
10 import org.restafarian.core.beans.LookupTable;
11 import org.restafarian.core.beans.LookupTableEntry;
12 import org.restafarian.core.beans.LookupTableProperty;
13 import org.restafarian.core.manager.LookupTableEntryManager;
14 import org.restafarian.core.manager.LookupTableManager;
15
16 /**
17  * <p>This is the LookupTable service.</p>
18  */
19 public class LookupTableService {
20         private String context = null;
21         private LookupTableManager lookupTableManager = null;
22         private LookupTableEntryManager lookupTableEntryManager = null;
23
24         /**
25          * <p>Returns a list of lookup tables in this context.</p>
26          *
27          * @return a list of lookup tables in this context
28          */
29         public List<LookupTable> getTables() {
30                 return lookupTableManager.findByContext(context);
31         }
32
33         /**
34          * <p>Returns a list of lookup table names in this context.</p>
35          *
36          * @return a list of lookup table names in this context
37          */
38         public List<String> getTableNames() {
39                 List<String> tableNames = new ArrayList<String>();
40
41                 List<LookupTable> tableInfo = lookupTableManager.findByContext(context);
42                 if (tableInfo != null) {
43                         Iterator<LookupTable> i = tableInfo.iterator();
44                         while (i.hasNext()) {
45                                 tableNames.add(i.next().getTableName());
46                         }
47                 }
48
49                 return tableNames;
50         }
51
52         /**
53          * <p>Returns the definition of the requested lookup table.</p>
54          *
55          * @param tableName the name of the requested table
56          * @return the definition of the requested lookup table
57          */
58         public LookupTable getTableDefinition(String tableName) {
59                 return lookupTableManager.findByContextAndTableName(context, tableName);
60         }
61
62         /**
63          * <p>Returns the contents of the requested lookup table.</p>
64          *
65          * @param tableName the name of the requested table
66          * @return the contents of the requested lookup table
67          */
68         public Map<String,Map<String,Object>> getTable(String tableName) {
69                 Map<String,Map<String,Object>> table = null;
70
71                 LookupTable lookupTable = lookupTableManager.findByContextAndTableName(context, tableName);
72                 if (lookupTable != null) {
73                         table = new TreeMap<String,Map<String,Object>>();
74                         List<LookupTableEntry> lookupTableEntryList = lookupTableEntryManager.findByContextAndTableName(context, tableName);
75                         if (lookupTableEntryList != null && lookupTableEntryList.size() > 0) {
76                                 Iterator<LookupTableEntry> i = lookupTableEntryList.iterator();
77                                 while (i.hasNext()) {
78                                         LookupTableEntry lookupTableEntry = i.next();
79                                         table.put(lookupTableEntry.getEntryId(), buildTableEntry(lookupTable, lookupTableEntry));
80                                 }
81                         }
82                 }
83
84                 return table;
85         }
86
87         /**
88          * <p>Returns the requested table entry.</p>
89          *
90          * @param tableName the name of the requested table
91          * @param entryId the id of the requested entry
92          * @return the requested table entry
93          */
94         public Map<String,Object> getTableEntry(String tableName, String entryId) {
95                 Map<String,Object> entry = null;
96
97                 LookupTable lookupTable = lookupTableManager.findByContextAndTableName(context, tableName);
98                 if (lookupTable != null) {
99                         LookupTableEntry lookupTableEntry = lookupTableEntryManager.findByContextTableEntry(context, tableName, entryId);
100                         if (lookupTableEntry != null) {
101                                 entry = buildTableEntry(lookupTable, lookupTableEntry);
102                         }
103                 }
104
105                 return entry;
106         }
107
108         /**
109          * <p>Returns the requested table entry.</p>
110          *
111          * @param tableName the name of the requested table
112          * @param entryId the id of the requested entry
113          * @return the requested table entry
114          */
115         private Map<String,Object> buildTableEntry(LookupTable lookupTable, LookupTableEntry lookupTableEntry) {
116                 Map<String,Object> entry = new TreeMap<String,Object>();
117
118                 entry.put("id", lookupTableEntry.getEntryId());
119                 entry.put("description", lookupTableEntry.getDescription());
120                 if (lookupTable.getProperties() != null && lookupTable.getProperties().size() > 0) {
121                         Iterator<LookupTableProperty> i = lookupTable.getProperties().iterator();
122                         while (i.hasNext()) {
123                                 LookupTableProperty lookupTableProperty = i.next();
124                                 int index = lookupTableProperty.getSequence();
125                                 String name = lookupTableProperty.getName();
126                                 if (StringUtils.isEmpty(lookupTableEntry.getProperty(index))) {
127                                         entry.put(name, "");
128                                 } else {
129                                         entry.put(name, lookupTableEntry.getProperty(index));
130                                 }
131                         }
132                 }
133
134                 return entry;
135         }
136
137         /**
138          * @param context the context to set
139          */
140         public void setContext(String context) {
141                 this.context = context;
142         }
143
144         /**
145          * @param lookupTableManager the lookupTableManager to set
146          */
147         public void setLookupTableManager(LookupTableManager lookupTableManager) {
148                 this.lookupTableManager = lookupTableManager;
149         }
150
151         /**
152          * @param lookupTableEntryManager the lookupTableEntryManager to set
153          */
154         public void setLookupTableEntryManager(LookupTableEntryManager lookupTableEntryManager) {
155                 this.lookupTableEntryManager = lookupTableEntryManager;
156         }
157 }
Note: See TracBrowser for help on using the browser.