1 /*******************************************************************************
2 * Copyright (c) 2009 Ordina and committers to Mod4j
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Ordina - initial implementation
10 *******************************************************************************/
11 package org.mod4j.dsl.service.generator.helpers;
12
13 import java.util.ArrayList;
14 import java.util.Collection;
15 import java.util.List;
16
17 import org.mod4j.crossx.broker.CrossxBroker;
18 import org.mod4j.crossx.mm.crossx.ReferenceSymbolProperty;
19 import org.mod4j.crossx.mm.crossx.Symbol;
20
21
22 public class ServiceUtil {
23
24 // static public String javaClassName(String className){
25 // return className;
26 // }
27 //
28 // static public String javaBaseClassName(String className){
29 // return javaClassName(className) + ProjectProperties.IMPLBASE_SUFFIX;
30 // }
31
32 /**
33 * Get the BusinessClassDto that are is referenced by roleRerference
34 * @param roleReference
35 * @return
36 */
37 static public String getReferredDtoName(Symbol roleReference) {
38 ReferenceSymbolProperty referredDto = CrossxBroker.getReferenceProperty(roleReference, "ReferencedDto") ;
39 Symbol referredDtoSymbol = CrossxBroker.lookupSymbol(referredDto.getModelname(),
40 referredDto.getSymbolname(), "Dto") ;
41
42 if( CrossxBroker.getPropertyValue(referredDtoSymbol, "dtoType").equals("ListDto") ) {
43 return CrossxBroker.getPropertyValue(referredDtoSymbol, "baseDto");
44 } else {
45 // dtoType must be BusinessClassDto
46 return referredDtoSymbol.getName();
47 }
48 }
49
50 /**
51 * Get the BusinessClassDto that are is referenced by roleRerference
52 * @param roleReference
53 * @return
54 */
55 static public String getReferredBusinessClassName(Symbol roleReference) {
56 ReferenceSymbolProperty referredDto = CrossxBroker.getReferenceProperty(roleReference, "ReferencedDto") ;
57 Symbol referredDtoSymbol = CrossxBroker.lookupSymbol(referredDto.getModelname(),
58 referredDto.getSymbolname(), "Dto") ;
59
60 // if( CrossxBroker.getPropertyValue(referredDtoSymbol, "dtoType").equals("ListDto") ) {
61 //
62 // ReferenceSymbolProperty ref = CrossxBroker.getReferenceProperty(referredDtoSymbol, "BaseDto");
63 // Symbol dto = CrossxBroker.lookupReference(ref);
64 // return CrossxBroker.getPropertyValue(dto, "businessClass");
65 // } else {
66 // dtoType must be BusinessClassDto
67 return CrossxBroker.getPropertyValue(referredDtoSymbol, "businessClass");
68 // }
69 }
70
71 static public Collection<Symbol> makeUnique(Collection<Symbol> symbols) {
72 List<Symbol> result = new ArrayList<Symbol>();
73
74 List<String> names = new ArrayList<String>();
75 for (Symbol symbol : symbols) {
76 if( !names.contains(symbol.getName() )){
77 names.add(symbol.getName() );
78 result.add(symbol);
79 }
80 }
81 return result;
82 }
83
84 }