KickJava   Java API By Example, From Geeks To Geeks.

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


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.sql.Blob JavaDoc;
24 import java.sql.SQLException JavaDoc;
25 import java.util.List JavaDoc;
26 import java.util.ArrayList JavaDoc;
27 import java.util.Iterator JavaDoc;
28 import java.util.Set JavaDoc;
29
30 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResourceData;
31 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.ContentResourceImpl;
32 import com.jaspersoft.jasperserver.api.JSExceptionWrapper;
33 import com.jaspersoft.jasperserver.api.JSException;
34 import com.jaspersoft.jasperserver.api.metadata.common.domain.ContentResource;
35 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource;
36 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource;
37 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference;
38 import com.jaspersoft.jasperserver.api.metadata.common.service.ResourceFactory;
39 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.ReferenceResolver;
40 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit;
41 import org.apache.commons.logging.Log;
42 import org.apache.commons.logging.LogFactory;
43 import org.hibernate.Hibernate;
44
45
46 /**
47 * @hibernate.joined-subclass table="content_file"
48 * @hibernate.joined-subclass-key column="id"
49 */

50 public class ContentRepoFileResource extends RepoResource
51 {
52     private static final Log log = LogFactory.getLog(ContentRepoFileResource.class);
53
54         private String JavaDoc fileType;
55
56         private Blob JavaDoc data;
57
58
59         /**
60          * @hibernate.property column="data" type="blob"
61          */

62         public Blob JavaDoc getData() {
63             return data;
64         }
65
66         public void setData(Blob JavaDoc data) {
67             this.data = data;
68         }
69
70         /**
71          * @hibernate.property column="file_type" type="string" length="20"
72          */

73         public String JavaDoc getFileType() {
74             return fileType;
75         }
76
77         public void setFileType(String JavaDoc type) {
78             this.fileType = type;
79         }
80
81
82     protected void copyDataFrom(ContentResource dataRes) {
83             if (dataRes.isReference()) {
84                 setData(null);
85             } else {
86                 //only update when the client has set some data
87
if (dataRes.hasData()) {
88                     byte[] clientData = dataRes.getData();
89                     Blob JavaDoc blob = Hibernate.createBlob(clientData);
90                     setData(blob);
91                 }
92             }
93         }
94
95 // public void set(ContentResource file)
96
// {
97
// copyDataFrom(file);
98
// setDescription(file.getDescription());
99
// setFileType(file.getFileType());
100
// setLabel(file.getLabel());
101
// setName(file.getName());
102
// }
103

104     public FileResourceData copyData() {
105         try {
106             FileResourceData resData;
107
108             Blob JavaDoc blob = getData();
109             if (blob == null) {
110                 resData = new FileResourceData((byte[]) null);
111             } else {
112                 resData = new FileResourceData(blob.getBinaryStream());
113             }
114
115             return resData;
116         } catch (SQLException JavaDoc e) {
117             log.error("Error while reading data blob of \"" + getResourceURI() + "\"", e);
118             throw new JSExceptionWrapper(e);
119         }
120     }
121
122     protected void copyTo(Resource clientRes, ResourceFactory resourceFactory) {
123         super.copyTo(clientRes, resourceFactory);
124
125         ContentResource resource = (ContentResource) clientRes;
126
127         resource.setFileType(getFileType());
128         //copyDataTo(fileRes);//don't send the data by default
129
resource.setReferenceURI(null);
130
131         RepoFolder childrenFolder = getChildrenFolder();
132
133         if (childrenFolder != null) {
134             Set JavaDoc resList = childrenFolder.getChildren();
135             for (Iterator JavaDoc it = resList.iterator(); it.hasNext();) {
136                 ContentRepoFileResource fileRes = (ContentRepoFileResource) it.next();
137                 resource.addChildResource((ContentResource) fileRes.toClient(resourceFactory));
138             }
139         }
140
141     }
142
143
144     protected void copyFrom(Resource clientRes,
145             ReferenceResolver referenceResolver) {
146         super.copyFrom(clientRes, referenceResolver);
147
148         ContentResource dataRes = (ContentResource) clientRes;
149         setFileType(dataRes.getFileType());
150         copyDataFrom(dataRes);
151         copyResources(referenceResolver, (ContentResource) clientRes);
152     }
153
154
155     private void copyResources(ReferenceResolver referenceResolver, ContentResource resource) {
156         List JavaDoc clientResources = resource.getResources();
157         if (clientResources != null && !clientResources.isEmpty()) {
158             for (Iterator JavaDoc it = clientResources.iterator(); it.hasNext();) {
159                 ContentResource childResource = (ContentResource) it.next();
160                 getReference(childResource, RepoFileResource.class, referenceResolver);
161             }
162         }
163     }
164
165
166     protected Class JavaDoc getClientItf()
167     {
168         return ContentResource.class;
169     }
170 }
171
Popular Tags