Remove LayoutItemPortal.get/setNavigationTable().
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / shared / libglom / layout / LayoutItemPortal.java
1 package org.glom.web.shared.libglom.layout;
2
3 import org.glom.web.client.StringUtils;
4 import org.glom.web.shared.libglom.Relationship;
5
6 public class LayoutItemPortal extends LayoutGroup implements UsesRelationship {
7         private static final long serialVersionUID = 4952677991725269830L;
8
9         /*
10          * Don't make this final, because that breaks GWT serialization. See
11          * http://code.google.com/p/google-web-toolkit/issues/detail?id=1054
12          */
13         private/* final */UsesRelationship usesRel = new UsesRelationshipImpl();
14
15         public enum NavigationType {
16                 NAVIGATION_NONE, NAVIGATION_AUTOMATIC, NAVIGATION_SPECIFIC
17         }
18
19         private NavigationType navigationType = NavigationType.NAVIGATION_AUTOMATIC;
20         private UsesRelationship navigationRelationshipSpecific = null;
21
22         /**
23          * @return
24          */
25         public String getFromField() {
26                 String result = null;
27
28                 final Relationship relationship = getRelationship();
29                 if (relationship != null) {
30                         result = relationship.getFromField();
31                 }
32
33                 return result;
34         }
35
36         /*
37          * (non-Javadoc)
38          * 
39          * @see
40          * org.glom.web.shared.libglom.layout.UsesRelationship#setRelationship(org.glom.web.shared.libglom.Relationship)
41          */
42         @Override
43         public void setRelationship(final Relationship relationship) {
44                 usesRel.setRelationship(relationship);
45         }
46
47         /*
48          * (non-Javadoc)
49          * 
50          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelationship()
51          */
52         @Override
53         public Relationship getRelationship() {
54                 return usesRel.getRelationship();
55         }
56
57         /*
58          * (non-Javadoc)
59          * 
60          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getHasRelationshipName()
61          */
62         @Override
63         public boolean getHasRelationshipName() {
64                 return usesRel.getHasRelationshipName();
65         }
66
67         /*
68          * (non-Javadoc)
69          * 
70          * @see
71          * org.glom.web.shared.libglom.layout.UsesRelationship#setRelatedRelationship(org.glom.web.shared.libglom.Relationship
72          * )
73          */
74         @Override
75         public void setRelatedRelationship(final Relationship relationship) {
76                 usesRel.setRelatedRelationship(relationship);
77         }
78
79         /*
80          * (non-Javadoc)
81          * 
82          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelatedRelationship()
83          */
84         @Override
85         public Relationship getRelatedRelationship() {
86                 return usesRel.getRelatedRelationship();
87         }
88
89         /*
90          * (non-Javadoc)
91          * 
92          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getHasRelatedRelationshipName()
93          */
94         @Override
95         public boolean getHasRelatedRelationshipName() {
96                 return usesRel.getHasRelatedRelationshipName();
97         }
98
99         /*
100          * (non-Javadoc)
101          * 
102          * @see org.glom.web.shared.libglom.layout.UsesRelationship#get_sql_join_alias_name()
103          */
104         @Override
105         public String getSqlJoinAliasName() {
106                 return usesRel.getSqlJoinAliasName();
107         }
108
109         /*
110          * (non-Javadoc)
111          * 
112          * @see org.glom.web.shared.libglom.layout.UsesRelationship#get_sql_table_or_join_alias_name(java.lang.String)
113          */
114         @Override
115         public String getSqlTableOrJoinAliasName(final String tableName) {
116                 return usesRel.getSqlTableOrJoinAliasName(tableName);
117         }
118
119         /*
120          * (non-Javadoc)
121          * 
122          * @see org.glom.web.shared.libglom.layout.UsesRelationship#get_table_used(java.lang.String)
123          */
124         @Override
125         public String getTableUsed(final String parentTable) {
126                 return usesRel.getTableUsed(parentTable);
127         }
128
129         /**
130          * @return
131          */
132         public NavigationType getNavigationType() {
133                 return navigationType;
134         }
135
136         /**
137          * @param navigationAutomatic
138          */
139         public void setNavigationType(final NavigationType navigationType) {
140                 this.navigationType = navigationType;
141         }
142
143         /**
144          * @return
145          */
146         public UsesRelationship getNavigationRelationshipSpecific() {
147                 if (getNavigationType() == NavigationType.NAVIGATION_SPECIFIC) {
148                         return navigationRelationshipSpecific;
149                 } else {
150                         return null;
151                 }
152         }
153
154         /**
155          * @return
156          */
157         public void setNavigationRelationshipSpecific(final UsesRelationship relationship) {
158                 navigationRelationshipSpecific = relationship;
159                 navigationType = NavigationType.NAVIGATION_SPECIFIC;
160         }
161
162         /*
163          * (non-Javadoc)
164          * 
165          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getRelationshipNameUsed()
166          */
167         @Override
168         public String getRelationshipNameUsed() {
169                 return usesRel.getRelationshipNameUsed();
170         }
171
172         @Override
173         public String getTitleOriginal() {
174                 String title = getTitleUsed("" /* parent table - not relevant */, "" /* locale */);
175                 if (StringUtils.isEmpty(title)) {
176                         title = "Undefined Table";
177                 }
178
179                 return title;
180         }
181
182         @Override
183         public String getTitle(final String locale) {
184                 String title = getTitleUsed("" /* parent table - not relevant */, locale);
185                 if (StringUtils.isEmpty(title)) {
186                         title = "Undefined Table";
187                 }
188
189                 return title;
190         }
191
192         @Override
193         public String getTitleOrName(final String locale) {
194                 String title = getTitleUsed("" /* parent table - not relevant */, locale);
195                 if (StringUtils.isEmpty(title)) {
196                         title = getRelationshipNameUsed();
197                 }
198
199                 if (StringUtils.isEmpty(title)) {
200                         title = "Undefined Table";
201                 }
202
203                 return title;
204         }
205
206         /*
207          * (non-Javadoc)
208          * 
209          * @see org.glom.web.shared.libglom.layout.UsesRelationship#getTitleUsed(java.lang.String, java.lang.String)
210          */
211         @Override
212         public String getTitleUsed(final String parentTableTitle, final String locale) {
213                 return usesRel.getTitleUsed(parentTableTitle, locale);
214         }
215 }