KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > api > metadata > common > service > impl > hibernate > persistent > RepoResource


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21 package com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent;
22
23 import java.util.HashSet JavaDoc;
24 import java.util.Set JavaDoc;
25
26 import org.apache.commons.lang.builder.EqualsBuilder;
27 import org.apache.commons.lang.builder.HashCodeBuilder;
28 import org.apache.commons.logging.Log;
29 import org.apache.commons.logging.LogFactory;
30
31 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource;
32 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceLookup;
33 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference;
34 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.ResourceLookupImpl;
35 import com.jaspersoft.jasperserver.api.metadata.common.service.ResourceFactory;
36 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.ReferenceResolver;
37
38
39
40 /**
41  * @author Teodor Danciu (teodord@users.sourceforge.net)
42  * @version $Id: RepoResource.java 3179 2006-04-20 15:07:04Z lucian $
43  *
44  * @disabled_hibernate.class table="Resource" abstract="true"
45  */

46 public abstract class RepoResource extends RepoResourceBase
47 {
48     private static final Log log = LogFactory.getLog(RepoResource.class);
49     
50     private RepoFolder childrenFolder;
51
52     private Set JavaDoc newChildren;
53     
54     protected RepoResource() {
55     }
56
57     protected final ResourceReference getClientReference(RepoResource reference, ResourceFactory resourceFactory) {
58         ResourceReference clientRef;
59         if (reference == null) {
60             clientRef = null;
61         } else if (getChildrenFolder() != null && getChildrenFolder().equals(reference.getParent()) ) {
62             //local resource
63
Resource clientRes = (Resource) reference.toClient(resourceFactory);
64             clientRef = new ResourceReference(clientRes);
65         } else {
66             ResourceLookup clientLookup = reference.toClientLookup();
67             clientRef = new ResourceReference(clientLookup);
68         }
69         return clientRef;
70     }
71
72     public Object JavaDoc toClient(ResourceFactory resourceFactory) {
73         Resource clientRes = (Resource) super.toClient(resourceFactory);
74         copyTo(clientRes, resourceFactory);
75         return clientRes;
76     }
77
78     public ResourceLookup toClientLookup() {
79         Class JavaDoc clientItf = getClientItf();
80         //TODO context?
81
ResourceLookup clientRes = new ResourceLookupImpl();
82         clientRes.setResourceType(clientItf.getName());
83         super.copyTo(clientRes);
84         return clientRes;
85     }
86
87     protected void copyTo(Resource clientRes, ResourceFactory resourceFactory) {
88         super.copyTo(clientRes);
89     }
90
91     public void copyFromClient(Resource clientRes, ReferenceResolver referenceResolver)
92     {
93         initNewChildren();
94         
95         copyFrom(clientRes, referenceResolver);
96         
97         filterChildren();
98     }
99     
100     protected void copyFrom(Resource clientRes, ReferenceResolver referenceResolver) {
101         super.copyFrom(clientRes);
102     }
103
104     protected void initNewChildren() {
105         newChildren = null;
106     }
107
108     public void addNewChild(RepoResource resource) {
109         RepoFolder local = getChildrenFolder();
110
111         resource.setParent(local);
112         local.addChild(resource);
113
114         if (newChildren == null) {
115             newChildren = new HashSet JavaDoc();
116         }
117         newChildren.add(resource);
118     }
119
120     protected void filterChildren() {
121         RepoFolder children = getChildrenFolder();
122         if (children != null) {
123             children.filterChildren(newChildren);
124         }
125     }
126
127
128     /**
129      * @hibernate.many-to-one
130      * column="childrenFolder" cascade="save-update,delete" unique="true"
131      */

132     public RepoFolder getChildrenFolder() {
133         return childrenFolder;
134     }
135
136     public void setChildrenFolder(RepoFolder childrenFolder) {
137         this.childrenFolder = childrenFolder;
138     }
139
140     protected RepoResource getReference(ResourceReference resourceRef, Class JavaDoc persistentClass, ReferenceResolver referenceResolver) {
141         return referenceResolver.getReference(this, resourceRef, persistentClass);
142     }
143
144     protected RepoResource getReference(Resource resource, Class JavaDoc persistentClass, ReferenceResolver referenceResolver) {
145         return referenceResolver.getReference(this, resource, persistentClass);
146     }
147
148     public boolean equals(Object JavaDoc obj) {
149         if (!(obj instanceof RepoResource)) {
150             return false;
151         }
152         if (this == obj) {
153             return true;
154         }
155         if (isNew()) {
156             return super.equals(obj);
157         }
158         RepoResource res = (RepoResource) obj;
159         return new EqualsBuilder().append(getId(), res.getId()).isEquals();
160     }
161
162     public int hashCode() {
163         if (isNew()) {
164             return super.hashCode();
165         }
166         return new HashCodeBuilder().append(getId()).toHashCode();
167     }
168
169     public String JavaDoc toString() {
170         return getResourceURI();
171     }
172 }
173
Popular Tags