View Javadoc
1   /**
2    * Copyright 2005-2015 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.kns.datadictionary.exporter;
17  
18  import org.apache.commons.lang.StringUtils;
19  import org.kuali.rice.kns.datadictionary.BusinessObjectEntry;
20  import org.kuali.rice.krad.datadictionary.DataDictionaryEntry;
21  import org.kuali.rice.kns.datadictionary.MaintenanceDocumentEntry;
22  import org.kuali.rice.kns.datadictionary.TransactionalDocumentEntry;
23  import org.kuali.rice.krad.service.DataDictionaryService;
24  import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
25  
26  import java.util.HashMap;
27  import java.util.Map;
28  
29  @Deprecated
30  public class DataDictionaryMap extends DataDictionaryMapBase {
31  
32      private DataDictionaryService dataDictionaryService;
33  
34      BusinessObjectEntryMapper boMapper = new BusinessObjectEntryMapper();
35      MaintenanceDocumentEntryMapper maintDocMapper = new MaintenanceDocumentEntryMapper();
36      TransactionalDocumentEntryMapper transDocMapper = new TransactionalDocumentEntryMapper();
37      
38      Map<String,Map> ddMap = new HashMap<String,Map>();
39      
40      public DataDictionaryMap(DataDictionaryService dataDictionaryService) {
41          super();
42          this.dataDictionaryService = dataDictionaryService;
43      }
44  
45      public Object get(Object key) {
46          Map subMap = ddMap.get( key );
47          if ( subMap == null ) { // need to load from DD
48              synchronized( this ) { // ensure only one update access happening at a time
49                  subMap = ddMap.get( key );
50                  if ( subMap == null ) { // recheck in case it was loaded by another thread while this one was blocked
51                      DataDictionaryEntry entry = KRADServiceLocatorWeb.getDataDictionaryService().getDataDictionary().getDictionaryObjectEntry( key.toString() );
52                      // if that fails try just using the simple name if a full class name was passed
53                      if ( entry == null && key.toString().contains(".")) {
54                      	entry = dataDictionaryService.getDataDictionary().getDictionaryObjectEntry( StringUtils.substringAfterLast( key.toString(), "." ) );
55                      }
56                      if ( entry != null ) {
57                          if ( entry instanceof BusinessObjectEntry ) {
58                              subMap = boMapper.mapEntry( (BusinessObjectEntry)entry ).getExportData();                    
59                          } else if ( entry instanceof MaintenanceDocumentEntry ) {
60                              subMap = maintDocMapper.mapEntry( (MaintenanceDocumentEntry)entry ).getExportData();                    
61                          } else if ( entry instanceof TransactionalDocumentEntry ) {
62                              subMap = transDocMapper.mapEntry( (TransactionalDocumentEntry)entry ).getExportData();                    
63                          }
64                      }
65                      if ( subMap != null ) {
66                          ddMap.put( key.toString(), subMap );
67                      }
68                  }
69              }
70          }
71          return subMap;
72      }
73  
74      public DataDictionaryService getDataDictionaryService() {
75          return dataDictionaryService;
76      }
77  
78      public void setDataDictionaryService(DataDictionaryService dataDictionaryService) {
79          this.dataDictionaryService = dataDictionaryService;
80      }
81  
82  }