Rev 1814 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1814 | Rev 1830 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | package pt.estgp.estgweb.services.data; |
1 | package pt.estgp.estgweb.services.data; |
2 | 2 | ||
3 | import jomm.dao.impl.AbstractDao; |
- | |
4 | import jomm.utils.FilesUtils; |
- | |
5 | import jomm.utils.MimeTypeGuesser; |
- | |
6 | import org.apache.log4j.Logger; |
3 | import org.apache.log4j.Logger; |
7 | import org.dom4j.Document; |
- | |
8 | import org.dom4j.DocumentFactory; |
- | |
9 | import org.dom4j.Element; |
- | |
10 | import pt.estgp.estgweb.domain.*; |
4 | import pt.estgp.estgweb.domain.*; |
11 | import pt.estgp.estgweb.domain.dao.DaoFactory; |
5 | import pt.estgp.estgweb.domain.dao.DaoFactory; |
12 | import pt.estgp.estgweb.domain.typesgen.repository.AbstractRepositorySourceModuleInterfacePlugin; |
6 | import pt.estgp.estgweb.domain.typesgen.repository.AbstractRepositorySourceModuleInterfacePlugin; |
13 | import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
7 | import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
14 | import pt.estgp.estgweb.services.data.impl.DefaultRepositoryFile; |
8 | import pt.estgp.estgweb.services.data.impl.DefaultRepositoryFile; |
15 | import pt.estgp.estgweb.utils.DatesWebUtils; |
9 | import pt.estgp.estgweb.utils.DatesWebUtils; |
- | 10 | import pt.estgp.estgweb.utils.Globals; |
|
- | 11 | import pt.estgp.estgweb.web.controllers.utils.FileUploaded; |
|
16 | import pt.utl.ist.berserk.logic.serviceManager.IService; |
12 | import pt.utl.ist.berserk.logic.serviceManager.IService; |
17 | 13 | ||
18 | import java.io.FileInputStream; |
- | |
19 | import java.io.IOException; |
- | |
20 | import java.io.InputStream; |
14 | import java.io.*; |
21 | import java.util.ArrayList; |
15 | import java.util.ArrayList; |
22 | import java.util.Date; |
16 | import java.util.Date; |
23 | import java.util.HashSet; |
- | |
24 | import java.util.List; |
17 | import java.util.List; |
25 | 18 | ||
26 | /** |
19 | /** |
27 | * @author Jorge Machado |
20 | * @author Jorge Machado |
28 | * @date 4/Jun/2008 |
21 | * @date 4/Jun/2008 |
Line 31... | Line 24... | ||
31 | public class RepositoryService implements IService |
24 | public class RepositoryService implements IService |
32 | { |
25 | { |
33 | 26 | ||
34 | private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(RepositoryService.class); |
27 | private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(RepositoryService.class); |
35 | 28 | ||
- | 29 | ||
- | 30 | /************************************************* |
|
- | 31 | * |
|
- | 32 | * SERVICOS DO MODULO DE UTILITARIOS WEB |
|
- | 33 | * TRANSACIONAL ISOLADOS |
|
- | 34 | * |
|
- | 35 | * ***********************************************/ |
|
- | 36 | ||
- | 37 | /** |
|
- | 38 | * |
|
- | 39 | * @param fileUploaded |
|
- | 40 | * @param accessControl |
|
- | 41 | * @param userSession |
|
- | 42 | * @return |
|
- | 43 | * @throws FileNotFoundException |
|
- | 44 | */ |
|
- | 45 | public RepositoryFile4JsonView storeRepositoryFileFromFileUpload(FileUploaded fileUploaded, ResourceAccessControlEnum accessControl, UserSession userSession) throws 1.5.0/docs/api/java/io/FileNotFoundException.html">FileNotFoundException |
|
- | 46 | { |
|
- | 47 | 1.5.0/docs/api/java/io/File.html">File tmpFile = new 1.5.0/docs/api/java/io/File.html">File(Globals.TMP_DIR + 1.5.0/docs/api/java/io/File.html">File.separator + fileUploaded.getTmpName()); |
|
- | 48 | 1.5.0/docs/api/java/lang/String.html">String identifier = storeRepositoryFile(new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(tmpFile), |
|
- | 49 | fileUploaded.getContentType(), |
|
- | 50 | fileUploaded.getExtension(), |
|
- | 51 | (int)fileUploaded.getFileSize(), |
|
- | 52 | fileUploaded.getFileName(), |
|
- | 53 | fileUploaded.getDescription(), |
|
- | 54 | accessControl, |
|
- | 55 | null, |
|
- | 56 | userSession.getUser()); |
|
- | 57 | RepositoryFile4JsonView repositoryFile4JsonView = new RepositoryFile4JsonView(); |
|
- | 58 | repositoryFile4JsonView.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date()); |
|
- | 59 | repositoryFile4JsonView.setExtension(fileUploaded.getExtension()); |
|
- | 60 | repositoryFile4JsonView.setName(fileUploaded.getFileName()); |
|
- | 61 | repositoryFile4JsonView.setContentType(fileUploaded.getContentType()); |
|
- | 62 | repositoryFile4JsonView.setIdentifier(identifier); |
|
- | 63 | repositoryFile4JsonView.setSize((int) fileUploaded.getFileSize()); |
|
- | 64 | return repositoryFile4JsonView; |
|
- | 65 | ||
- | 66 | } |
|
- | 67 | ||
- | 68 | public RepositoryFile4JsonView replaceRepositoryFileFromFileUpload(1.5.0/docs/api/java/lang/String.html">String identifier, FileUploaded fileUploaded, ResourceAccessControlEnum accessControl, UserSession userSession) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
|
- | 69 | { |
|
- | 70 | 1.5.0/docs/api/java/io/File.html">File tmpFile = new 1.5.0/docs/api/java/io/File.html">File(Globals.TMP_DIR + 1.5.0/docs/api/java/io/File.html">File.separator + fileUploaded.getTmpName()); |
|
- | 71 | replaceLastRepositoryFileVersion(identifier,new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(tmpFile), |
|
- | 72 | fileUploaded.getContentType(), |
|
- | 73 | fileUploaded.getExtension(), |
|
- | 74 | (int)fileUploaded.getFileSize(), |
|
- | 75 | fileUploaded.getFileName(), |
|
- | 76 | fileUploaded.getDescription(), |
|
- | 77 | accessControl); |
|
- | 78 | RepositoryFile4JsonView repositoryFile4JsonView = new RepositoryFile4JsonView(); |
|
- | 79 | repositoryFile4JsonView.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date()); |
|
- | 80 | repositoryFile4JsonView.setExtension(fileUploaded.getExtension()); |
|
- | 81 | repositoryFile4JsonView.setName(fileUploaded.getFileName()); |
|
- | 82 | repositoryFile4JsonView.setContentType(fileUploaded.getContentType()); |
|
- | 83 | repositoryFile4JsonView.setIdentifier(identifier); |
|
- | 84 | repositoryFile4JsonView.setSize((int) fileUploaded.getFileSize()); |
|
- | 85 | return repositoryFile4JsonView; |
|
- | 86 | } |
|
- | 87 | ||
- | 88 | ||
- | 89 | /************************************************* |
|
- | 90 | * |
|
- | 91 | * SERVICOS DO REPOSITORIO NAO TRANSACIONAIS ISOLADOS |
|
- | 92 | * |
|
- | 93 | * ***********************************************/ |
|
- | 94 | ||
- | 95 | ||
- | 96 | /** |
|
- | 97 | * * Layer 1 |
|
- | 98 | * @param stream |
|
- | 99 | * @param contentType |
|
- | 100 | * @param extension |
|
- | 101 | * @param size |
|
- | 102 | * @param name |
|
- | 103 | * @param description |
|
- | 104 | * @param accessControl |
|
- | 105 | * @param sourceModuleInterfacePlugin |
|
- | 106 | * @param userSession |
|
- | 107 | * @return |
|
- | 108 | */ |
|
36 | public 1.5.0/docs/api/java/lang/String.html">String storeRepositoryFile(5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension, int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, ResourceAccessControlEnum accessControl, AbstractRepositorySourceModuleInterfacePlugin sourceModuleInterfacePlugin, UserSession userSession) |
109 | public 1.5.0/docs/api/java/lang/String.html">String storeRepositoryFile(5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension, int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, ResourceAccessControlEnum accessControl, AbstractRepositorySourceModuleInterfacePlugin sourceModuleInterfacePlugin, UserSession userSession) |
37 | { |
110 | { |
38 | return storeRepositoryFile(stream,contentType,extension,size,name,description,accessControl, sourceModuleInterfacePlugin, userSession.getUser()); |
111 | return storeRepositoryFile(stream,contentType,extension,size,name,description,accessControl, sourceModuleInterfacePlugin, userSession.getUser()); |
39 | } |
112 | } |
40 | /** |
113 | /** |
41 | * |
114 | * Guarda um novo Repository File |
42 | * @param stream . |
115 | * @param stream . |
43 | * @param contentType . |
116 | * @param contentType . |
44 | * @param extension . |
117 | * @param extension . |
45 | * @param size . |
118 | * @param size . |
46 | * @param name . |
119 | * @param name . |
Line 56... | Line 129... | ||
56 | repositoryFile.setDeleted(false); |
129 | repositoryFile.setDeleted(false); |
57 | repositoryFile.setAccessControl(accessControl.getKey()); |
130 | repositoryFile.setAccessControl(accessControl.getKey()); |
58 | repositoryFile.setOwner(user); |
131 | repositoryFile.setOwner(user); |
59 | repositoryFile.setSourceModule(sourceModuleInterfacePlugin); |
132 | repositoryFile.setSourceModule(sourceModuleInterfacePlugin); |
60 | DaoFactory.getRepositoryFileDaoImpl().save(repositoryFile); |
133 | DaoFactory.getRepositoryFileDaoImpl().save(repositoryFile); |
61 | - | ||
62 | - | ||
63 | //todo getMD5Checksum() |
- | |
64 | // System.out.println(getMD5Checksum(new File("/Volumes/Home/jorgemachado/Documents/FileZilla_3.24.0_macosx-x86.app.tar.bz2"))); |
- | |
65 | //System.out.println(compareTwoFiles(new File("/Volumes/Home/jorgemachado/Documents/FileZilla_3.24.0_macosx-x86.app.tar.bz2"), new File("/Volumes/Home/jorgemachado/Documents/FileZilla_3.24.0_macosx-x86.app.tar-copia.bz2"))); |
- | |
66 | - | ||
67 | storeNewVersion(stream, contentType, extension, size, name, description, repositoryFile); |
134 | RepositoryServiceTier2.storeNewVersion(stream, contentType, extension, size, name, description, repositoryFile); |
- | 135 | //returning id |
|
68 | return new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder().append(repositoryFile.getId()).toString(); |
136 | return new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder().append(repositoryFile.getId()).toString(); |
69 | } |
137 | } |
70 | 138 | ||
71 | private void storeNewVersion(5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension, int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, RepositoryFileImpl repositoryFile) { |
- | |
72 | RepositoryFileVersionImpl repositoryFileVersion = createVersion(repositoryFile); |
- | |
73 | repositoryFileVersion.setName(name); |
- | |
74 | repositoryFileVersion.setSize(size); |
- | |
75 | repositoryFileVersion.setDescription(description); |
- | |
76 | repositoryFileVersion.setContentType(contentType); |
- | |
77 | repositoryFileVersion.setExtension(extension); |
- | |
78 | try { |
139 | /** |
79 | 1.5.0/docs/api/java/lang/String.html">String md5 = RepositoryManager.store(stream, repositoryFileVersion.getId()); |
140 | * Manda substituir a versão do ficheiro no layer 2 sem criar novo |
80 | repositoryFileVersion.setMd5checksum(md5); |
- | |
81 | 1.5.0/docs/api/java/lang/Long.html">Long realMirror = DaoFactory.getRepositoryFileVersionDaoImpl().findIdFromPhisicalMirror4Md5(md5,repositoryFileVersion.getId()); |
- | |
82 | if(realMirror != null) |
141 | * substituindo o ficheiro |
83 | { |
142 | * @param stream . |
84 | boolean areTrueEqual = RepositoryManager.compareFiles(repositoryFileVersion.getId(),realMirror); |
- | |
85 | if(areTrueEqual) |
143 | * @param contentType . |
86 | { |
144 | * @param extension . |
87 | repositoryFileVersion.setMirrorFileVersionId(realMirror + ""); |
- | |
88 | logger.info("Found mirror version id: " + realMirror + " for this version: " + repositoryFileVersion.getId() + " will delete this file and use mirror"); |
- | |
89 | RepositoryManager.delete(repositoryFileVersion.getId()); |
- | |
90 | } |
145 | * @param size . |
91 | } |
146 | * @param name . |
92 | 5+0%2Fdocs%2Fapi+Document">Document dom = createXMLdescription(repositoryFileVersion); |
- | |
93 | RepositoryManager.storeDescription(dom, repositoryFileVersion.getId()); |
- | |
94 | } |
- | |
95 | catch (1.5.0/docs/api/java/io/IOException.html">IOException e) |
147 | * @param description . |
96 | { |
- | |
97 | logger.error(e,e); |
148 | * @param accessControl . |
98 | } |
- | |
99 | } |
- | |
100 | 149 | ||
- | 150 | */ |
|
- | 151 | public void replaceLastRepositoryFileVersion(1.5.0/docs/api/java/lang/String.html">String identifier, 5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension, int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, ResourceAccessControlEnum accessControl) |
|
- | 152 | { |
|
- | 153 | RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier)); |
|
- | 154 | repositoryFile.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date()); |
|
- | 155 | repositoryFile.setAccessControl(accessControl.getKey()); |
|
- | 156 | RepositoryServiceTier2.replaceLastVersion(stream, contentType, extension, size, name, description, repositoryFile); |
|
- | 157 | } |
|
101 | 158 | ||
102 | /** |
159 | /** |
- | 160 | * Manda criar uma nova versão do ficheiro no layer 2 |
|
103 | * @param stream . |
161 | * @param stream . |
104 | * @param contentType . |
162 | * @param contentType . |
105 | * @param size . |
163 | * @param size . |
106 | * @param name . |
164 | * @param name . |
107 | * @param description . |
165 | * @param description . |
108 | * @param identifier . |
166 | * @param identifier . |
109 | * @param extension . |
167 | * @param extension . |
110 | * @param accessControl . |
168 | * @param accessControl . |
- | 169 | * @return new file version id |
|
111 | */ |
170 | */ |
112 | public void updateRepositoryFile(1.5.0/docs/api/java/lang/String.html">String identifier, 5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension, int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, ResourceAccessControlEnum accessControl) |
171 | public long updateRepositoryFile(1.5.0/docs/api/java/lang/String.html">String identifier, 5+0%2Fdocs%2Fapi+InputStream">InputStream stream, 1.5.0/docs/api/java/lang/String.html">String contentType, 1.5.0/docs/api/java/lang/String.html">String extension, int size, 1.5.0/docs/api/java/lang/String.html">String name, 1.5.0/docs/api/java/lang/String.html">String description, ResourceAccessControlEnum accessControl) |
113 | { |
172 | { |
114 | 173 | ||
115 | RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier)); |
174 | RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier)); |
116 | repositoryFile.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date()); |
175 | repositoryFile.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date()); |
117 | repositoryFile.setAccessControl(accessControl.getKey()); |
176 | repositoryFile.setAccessControl(accessControl.getKey()); |
118 | storeNewVersion(stream, contentType, extension, size, name, description, repositoryFile); |
177 | return RepositoryServiceTier2.storeNewVersion(stream, contentType, extension, size, name, description, repositoryFile); |
119 | } |
178 | } |
120 | 179 | ||
121 | 180 | ||
- | 181 | ||
- | 182 | ||
- | 183 | ||
- | 184 | ||
- | 185 | ||
- | 186 | ||
- | 187 | ||
- | 188 | ||
- | 189 | /**LAYER 1 READ SERVICES**/ |
|
- | 190 | ||
- | 191 | ||
- | 192 | ||
- | 193 | ||
122 | /** |
194 | /** |
123 | * @param identifier . |
195 | * @param identifier . |
124 | * @return a view of a document |
196 | * @return a view of a document |
125 | */ |
197 | */ |
126 | public RepositoryFileImpl loadView(1.5.0/docs/api/java/lang/String.html">String identifier) |
198 | public RepositoryFileImpl loadView(1.5.0/docs/api/java/lang/String.html">String identifier) |
Line 133... | Line 205... | ||
133 | return repositoryFile; |
205 | return repositoryFile; |
134 | } |
206 | } |
135 | 207 | ||
136 | 208 | ||
137 | public RepositoryFileImpl loadView(1.5.0/docs/api/java/lang/String.html">String identifier,UserSession sess) |
209 | public RepositoryFileImpl loadView(1.5.0/docs/api/java/lang/String.html">String identifier,UserSession sess) |
138 | { |
210 | { |
139 | RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier)); |
- | |
140 | for (RepositoryFileVersionImpl version : repositoryFile.getRepositoryFileVersions()) |
- | |
141 | { |
- | |
142 | version.getSaveDate(); |
- | |
143 | } |
- | |
144 | return repositoryFile; |
211 | return loadView(identifier); |
145 | } |
212 | } |
- | 213 | ||
- | 214 | ||
146 | 215 | ||
147 | public IRepositoryFile loadByIdentifier(1.5.0/docs/api/java/lang/String.html">String identifier) |
216 | public IRepositoryFile loadByIdentifier(1.5.0/docs/api/java/lang/String.html">String identifier) |
148 | { |
217 | { |
149 | return load(identifier,null); |
218 | return load(identifier,null); |
150 | } |
219 | } |
Line 165... | Line 234... | ||
165 | iRepositoryFile.setName(repositoryFile.getLastVersion().getName()); |
234 | iRepositoryFile.setName(repositoryFile.getLastVersion().getName()); |
166 | 235 | ||
167 | iRepositoryFile.setExtension(repositoryFile.getLastVersion().getExtension()); |
236 | iRepositoryFile.setExtension(repositoryFile.getLastVersion().getExtension()); |
168 | iRepositoryFile.setSaveDate(repositoryFile.getLastVersion().getSaveDate()); |
237 | iRepositoryFile.setSaveDate(repositoryFile.getLastVersion().getSaveDate()); |
169 | 238 | ||
170 | iRepositoryFile.setInput(getPhisicalInputStreamCheckMirrors(repositoryFile.getLastVersion())); |
239 | iRepositoryFile.setInput(RepositoryServiceTier3.getPhisicalInputStreamCheckMirrors(repositoryFile.getLastVersion())); |
171 | 240 | ||
172 | return iRepositoryFile; |
241 | return iRepositoryFile; |
173 | } |
242 | } |
174 | 243 | ||
175 | 244 | ||
176 | /** |
- | |
177 | * Check if there is this is a Mirror to return the real File |
- | |
178 | * @param repositoryFileVersion |
- | |
179 | * @return |
- | |
180 | */ |
- | |
181 | private 5+0%2Fdocs%2Fapi+InputStream">InputStream getPhisicalInputStreamCheckMirrors(RepositoryFileVersion repositoryFileVersion) |
- | |
182 | { |
- | |
183 | if(/*repositoryFileVersion.getMd5checksum() != null |
- | |
184 | && repositoryFileVersion.getMd5checksum().length() > 0 |
- | |
185 | && */ |
- | |
186 | repositoryFileVersion.getMirrorFileVersionId() != null |
- | |
187 | && repositoryFileVersion.getMirrorFileVersionId().length() > 0) |
- | |
188 | { |
- | |
189 | logger.info("This is a mirror: " + repositoryFileVersion.getId() + " returning file: " + repositoryFileVersion.getMirrorFileVersionId()); |
- | |
190 | RepositoryFileVersion realFile = DaoFactory.getRepositoryFileVersionDaoImpl().get(new 1.5.0/docs/api/java/lang/Long.html">Long(repositoryFileVersion.getMirrorFileVersionId())); |
- | |
191 | return RepositoryManager.load(realFile.getId()); |
- | |
192 | } |
- | |
193 | //OLD FASHION |
- | |
194 | else |
- | |
195 | return RepositoryManager.load(repositoryFileVersion.getId()); |
- | |
196 | } |
- | |
197 | 245 | ||
198 | /** |
246 | /** |
199 | * @param identifier . |
247 | * @param identifier . |
200 | * @param userSession . |
248 | * @param userSession . |
201 | * @return a view with an inputStream for document |
249 | * @return a view with an inputStream for document |
Line 205... | Line 253... | ||
205 | DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile(); |
253 | DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile(); |
206 | RepositoryFileVersionImpl repositoryFile = (RepositoryFileVersionImpl) DaoFactory.getRepositoryFileVersionDaoImpl().load(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier)); |
254 | RepositoryFileVersionImpl repositoryFile = (RepositoryFileVersionImpl) DaoFactory.getRepositoryFileVersionDaoImpl().load(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(identifier)); |
207 | iRepositoryFile.setContentType(repositoryFile.getContentType()); |
255 | iRepositoryFile.setContentType(repositoryFile.getContentType()); |
208 | iRepositoryFile.setSize(repositoryFile.getSize()); |
256 | iRepositoryFile.setSize(repositoryFile.getSize()); |
209 | iRepositoryFile.setName(repositoryFile.getName()); |
257 | iRepositoryFile.setName(repositoryFile.getName()); |
210 | iRepositoryFile.setInput(getPhisicalInputStreamCheckMirrors(repositoryFile)); |
258 | iRepositoryFile.setInput(RepositoryServiceTier3.getPhisicalInputStreamCheckMirrors(repositoryFile)); |
211 | iRepositoryFile.setExtension(repositoryFile.getExtension()); |
259 | iRepositoryFile.setExtension(repositoryFile.getExtension()); |
212 | iRepositoryFile.setSaveDate(repositoryFile.getSaveDate()); |
260 | iRepositoryFile.setSaveDate(repositoryFile.getSaveDate()); |
213 | return iRepositoryFile; |
261 | return iRepositoryFile; |
214 | } |
262 | } |
215 | 263 | ||
Line 226... | Line 274... | ||
226 | { |
274 | { |
227 | DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile(); |
275 | DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile(); |
228 | iRepositoryFile.setContentType(version.getContentType()); |
276 | iRepositoryFile.setContentType(version.getContentType()); |
229 | iRepositoryFile.setSize(version.getSize()); |
277 | iRepositoryFile.setSize(version.getSize()); |
230 | iRepositoryFile.setName(DatesWebUtils.getStringFromDateForFilename(version.getSaveDate()) + "-" + version.getName()); |
278 | iRepositoryFile.setName(DatesWebUtils.getStringFromDateForFilename(version.getSaveDate()) + "-" + version.getName()); |
231 | iRepositoryFile.setInput(getPhisicalInputStreamCheckMirrors(version)); |
279 | iRepositoryFile.setInput(RepositoryServiceTier3.getPhisicalInputStreamCheckMirrors(version)); |
232 | iRepositoryFile.setExtension(version.getExtension()); |
280 | iRepositoryFile.setExtension(version.getExtension()); |
233 | iRepositoryFile.setSaveDate(version.getSaveDate()); |
281 | iRepositoryFile.setSaveDate(version.getSaveDate()); |
234 | versions.add(iRepositoryFile); |
282 | versions.add(iRepositoryFile); |
235 | } |
283 | } |
236 | return versions; |
284 | return versions; |
237 | } |
285 | } |
238 | 286 | ||
239 | /** |
- | |
240 | * Create a new File Version |
- | |
241 | * |
- | |
242 | * @param repositoryFile . |
- | |
243 | * @return . |
- | |
244 | */ |
- | |
245 | private RepositoryFileVersionImpl createVersion(RepositoryFileImpl repositoryFile) |
- | |
246 | { |
- | |
247 | RepositoryFileVersionImpl repositoryFileVersion = DomainObjectFactory.createRepositoryFileVersionImpl(); |
- | |
248 | repositoryFileVersion.setRepositoryFile(repositoryFile); |
- | |
249 | if (repositoryFile.getRepositoryFileVersions() == null) |
- | |
250 | repositoryFile.setRepositoryFileVersions(new HashSet<RepositoryFileVersionImpl>()); |
- | |
251 | repositoryFile.getRepositoryFileVersions().add(repositoryFileVersion); |
- | |
252 | repositoryFile.setLastVersion(repositoryFileVersion); |
- | |
253 | DaoFactory.getRepositoryFileVersionDaoImpl().save(repositoryFileVersion); |
- | |
254 | return repositoryFileVersion; |
- | |
255 | } |
- | |
256 | - | ||
257 | public static 5+0%2Fdocs%2Fapi+Document">Document createXMLdescription(RepositoryFileVersionImpl repositoryFileVersion) |
- | |
258 | { |
- | |
259 | org.dom4j.5+0%2Fdocs%2Fapi+Document">Document dom = DocumentFactory.getInstance().createDocument(); |
- | |
260 | 5+0%2Fdocs%2Fapi+Element">Element rootElement = DocumentFactory.getInstance().createElement("repositoryFileVersion"); |
- | |
261 | dom.setRootElement(rootElement); |
- | |
262 | - | ||
263 | - | ||
264 | - | ||
265 | rootElement.addAttribute("id", "" + repositoryFileVersion.getId()); |
- | |
266 | - | ||
267 | 5+0%2Fdocs%2Fapi+Element">Element saveDate = DocumentFactory.getInstance().createElement("saveDate"); |
- | |
268 | saveDate.setText(""+ DatesWebUtils.getStringFromDateForFilename(repositoryFileVersion.getSaveDate())); |
- | |
269 | - | ||
270 | 5+0%2Fdocs%2Fapi+Element">Element name = DocumentFactory.getInstance().createElement("name"); |
- | |
271 | name.setText("" + repositoryFileVersion.getName()); |
- | |
272 | - | ||
273 | 5+0%2Fdocs%2Fapi+Element">Element md5 = DocumentFactory.getInstance().createElement("md5"); |
- | |
274 | md5.setText("" + repositoryFileVersion.getMd5checksum()); |
- | |
275 | - | ||
276 | 5+0%2Fdocs%2Fapi+Element">Element mirrorFileVersionId = DocumentFactory.getInstance().createElement("mirrorFileVersionId"); |
- | |
277 | if(repositoryFileVersion.getMirrorFileVersionId() != null) |
- | |
278 | mirrorFileVersionId.setText("" + repositoryFileVersion.getMirrorFileVersionId()); |
- | |
279 | else |
- | |
280 | mirrorFileVersionId.setText(""); |
- | |
281 | 287 | ||
282 | 288 | ||
283 | 289 | ||
284 | 5+0%2Fdocs%2Fapi+Element">Element contentType = DocumentFactory.getInstance().createElement("contentType"); |
- | |
285 | contentType.setText(""+repositoryFileVersion.getContentType()); |
- | |
286 | 290 | ||
287 | 5+0%2Fdocs%2Fapi+Element">Element extension = DocumentFactory.getInstance().createElement("extension"); |
- | |
288 | extension.setText("" + repositoryFileVersion.getExtension()); |
- | |
289 | 291 | ||
290 | 5+0%2Fdocs%2Fapi+Element">Element size = DocumentFactory.getInstance().createElement("sizeKb"); |
- | |
291 | size.setText("" + repositoryFileVersion.getSizeKb()); |
- | |
292 | 292 | ||
293 | 5+0%2Fdocs%2Fapi+Element">Element description = DocumentFactory.getInstance().createElement("description"); |
- | |
294 | description.setText(repositoryFileVersion.getDescription()); |
- | |
295 | 293 | ||
296 | rootElement.add(saveDate); |
- | |
297 | rootElement.add(name); |
- | |
298 | rootElement.add(md5); |
- | |
299 | rootElement.add(mirrorFileVersionId); |
- | |
300 | rootElement.add(contentType); |
- | |
301 | rootElement.add(extension); |
- | |
302 | rootElement.add(size); |
- | |
303 | rootElement.add(description); |
- | |
304 | 294 | ||
305 | //Repository File Generics |
- | |
306 | 5+0%2Fdocs%2Fapi+Element">Element repositoryFileElem = DocumentFactory.getInstance().createElement("repositoryFile"); |
- | |
307 | rootElement.add(repositoryFileElem); |
- | |
308 | 295 | ||
309 | repositoryFileElem.addAttribute("id", "" + repositoryFileVersion.getRepositoryFile().getId()); |
- | |
310 | 5+0%2Fdocs%2Fapi+Element">Element rSaveDate = DocumentFactory.getInstance().createElement("saveDate"); |
- | |
311 | rSaveDate.setText(""+ DatesWebUtils.getStringFromDateForFilename(repositoryFileVersion.getRepositoryFile().getSaveDate())); |
- | |
312 | 296 | ||
313 | 5+0%2Fdocs%2Fapi+Element">Element rUpdateDate = DocumentFactory.getInstance().createElement("updateDate"); |
- | |
314 | rUpdateDate.setText(""+ DatesWebUtils.getStringFromDateForFilename(repositoryFileVersion.getRepositoryFile().getUpdateDate())); |
- | |
315 | 297 | ||
316 | 298 | ||
317 | 5+0%2Fdocs%2Fapi+Element">Element accessControl = DocumentFactory.getInstance().createElement("accessControl"); |
- | |
318 | accessControl.setText(repositoryFileVersion.getRepositoryFile().getAccessControl()); |
- | |
319 | - | ||
320 | 5+0%2Fdocs%2Fapi+Element">Element sourceModule = DocumentFactory.getInstance().createElement("sourceModule"); |
- | |
321 | if(repositoryFileVersion.getRepositoryFile().getSourceModule() != null) |
- | |
322 | sourceModule.setText(repositoryFileVersion.getRepositoryFile().getSourceModule().getModuleName()); |
- | |
323 | else |
- | |
324 | sourceModule.setText("null"); |
- | |
325 | - | ||
326 | - | ||
327 | 5+0%2Fdocs%2Fapi+Element">Element deleted = DocumentFactory.getInstance().createElement("deleted"); |
- | |
328 | deleted.setText("" + repositoryFileVersion.getRepositoryFile().isDeleted()); |
- | |
329 | - | ||
330 | repositoryFileElem.add(rSaveDate); |
- | |
331 | repositoryFileElem.add(rUpdateDate); |
- | |
332 | repositoryFileElem.add(accessControl); |
- | |
333 | repositoryFileElem.add(deleted); |
- | |
334 | - | ||
335 | 5+0%2Fdocs%2Fapi+Element">Element owner = DocumentFactory.getInstance().createElement("owner"); |
- | |
336 | repositoryFileElem.add(owner); |
- | |
337 | owner.addAttribute("id", "" + repositoryFileVersion.getRepositoryFile().getOwner().getId()); |
- | |
338 | - | ||
339 | if (repositoryFileVersion.getRepositoryFile().getOwner().getName() != null) |
- | |
340 | { |
- | |
341 | 5+0%2Fdocs%2Fapi+Element">Element oName = DocumentFactory.getInstance().createElement("name"); |
- | |
342 | oName.setText(repositoryFileVersion.getRepositoryFile().getOwner().getName()); |
- | |
343 | owner.add(oName); |
- | |
344 | } |
- | |
345 | - | ||
346 | if (DocumentFactory.getInstance().createElement("roles") != null) |
- | |
347 | { |
- | |
348 | 5+0%2Fdocs%2Fapi+Element">Element oRoles = DocumentFactory.getInstance().createElement("roles"); |
- | |
349 | oRoles.setText(repositoryFileVersion.getRepositoryFile().getOwner().getRoles()); |
- | |
350 | owner.add(oRoles); |
- | |
351 | } |
- | |
352 | - | ||
353 | 5+0%2Fdocs%2Fapi+Element">Element oClass = DocumentFactory.getInstance().createElement("class"); |
- | |
354 | oClass.setText(repositoryFileVersion.getRepositoryFile().getOwner().getClass().getSimpleName()); |
- | |
355 | - | ||
356 | - | ||
357 | owner.add(oClass); |
- | |
358 | if (repositoryFileVersion.getRepositoryFile().getOwner() instanceof User) |
- | |
359 | { |
- | |
360 | 5+0%2Fdocs%2Fapi+Element">Element oUsername = DocumentFactory.getInstance().createElement("username"); |
- | |
361 | if(((User) repositoryFileVersion.getRepositoryFile().getOwner()).getUsername() == null) |
- | |
362 | oUsername.setText("UNKNOWN"); |
- | |
363 | else |
- | |
364 | oUsername.setText(((User) repositoryFileVersion.getRepositoryFile().getOwner()).getUsername()); |
- | |
365 | owner.add(oUsername); |
- | |
366 | - | ||
367 | if (((User) repositoryFileVersion.getRepositoryFile().getOwner()).getEmail() != null) |
- | |
368 | { |
- | |
369 | 5+0%2Fdocs%2Fapi+Element">Element oEmail = DocumentFactory.getInstance().createElement("email"); |
- | |
370 | oEmail.setText(((User) repositoryFileVersion.getRepositoryFile().getOwner()).getEmail()); |
- | |
371 | owner.add(oEmail); |
- | |
372 | } |
- | |
373 | - | ||
374 | if (((User) repositoryFileVersion.getRepositoryFile().getOwner()).getOutEmail() != null) |
- | |
375 | { |
- | |
376 | 5+0%2Fdocs%2Fapi+Element">Element outEmail = DocumentFactory.getInstance().createElement("outEmail"); |
- | |
377 | outEmail.setText(((User) repositoryFileVersion.getRepositoryFile().getOwner()).getOutEmail()); |
- | |
378 | owner.add(outEmail); |
- | |
379 | } |
- | |
380 | - | ||
381 | if (((User) repositoryFileVersion.getRepositoryFile().getOwner()).getBi() != null) |
- | |
382 | { |
- | |
383 | 5+0%2Fdocs%2Fapi+Element">Element biEmail = DocumentFactory.getInstance().createElement("bi"); |
- | |
384 | biEmail.setText(((User) repositoryFileVersion.getRepositoryFile().getOwner()).getBi()); |
- | |
385 | owner.add(biEmail); |
- | |
386 | } |
- | |
387 | - | ||
388 | - | ||
389 | if (repositoryFileVersion.getRepositoryFile().getOwner() instanceof Teacher) |
- | |
390 | { |
- | |
391 | 5+0%2Fdocs%2Fapi+Element">Element code = DocumentFactory.getInstance().createElement("teacherCode"); |
- | |
392 | code.setText("" + ((Teacher) repositoryFileVersion.getRepositoryFile().getOwner()).getSigesCode()); |
- | |
393 | owner.add(code); |
- | |
394 | } |
- | |
395 | if (repositoryFileVersion.getRepositoryFile().getOwner() instanceof Student) |
- | |
396 | { |
- | |
397 | 5+0%2Fdocs%2Fapi+Element">Element code = DocumentFactory.getInstance().createElement("studentCode"); |
- | |
398 | code.setText("" + ((Student) repositoryFileVersion.getRepositoryFile().getOwner()).getSigesCode()); |
- | |
399 | owner.add(code); |
- | |
400 | } |
- | |
401 | } |
- | |
402 | return dom; |
- | |
403 | } |
- | |
404 | 299 | ||
- | 300 | /* |
|
405 | public static void main(1.5.0/docs/api/java/lang/String.html">String[] args) throws 1.5.0/docs/api/java/lang/Exception.html">Exception { |
301 | public static void main(String[] args) throws Exception { |
406 | AbstractDao.getCurrentSession().beginTransaction(); |
302 | AbstractDao.getCurrentSession().beginTransaction(); |
407 | 1.5.0/docs/api/java/lang/String.html">String fileName = "/Volumes/Home/jorgemachado/Downloads/CV_PedroPepe_Docente4.pdf"; |
303 | String fileName = "/Volumes/Home/jorgemachado/Downloads/CV_PedroPepe_Docente4.pdf"; |
408 | new RepositoryService().storeRepositoryFile( |
304 | new RepositoryService().storeRepositoryFile( |
409 | new 1.5.0/docs/api/java/io/FileInputStream.html">FileInputStream(fileName), |
305 | new FileInputStream(fileName), |
410 | MimeTypeGuesser.getInstance().guessMimeType(fileName), |
306 | MimeTypeGuesser.getInstance().guessMimeType(fileName), |
411 | FilesUtils.getExtension(fileName), (int) (new java.io.1.5.0/docs/api/java/io/File.html">File(fileName)).length(),"CV_PedroPepe_Docente4.pdf","teste",ResourceAccessControlEnum.publicDomain,null,DaoFactory.getUserDaoImpl().load(new 1.5.0/docs/api/java/lang/Long.html">Long(1))); |
307 | FilesUtils.getExtension(fileName), (int) (new java.io.File(fileName)).length(),"CV_PedroPepe_Docente4.pdf","teste",ResourceAccessControlEnum.publicDomain,null,DaoFactory.getUserDaoImpl().load(new Long(1))); |
412 | AbstractDao.getCurrentSession().getTransaction().commit(); |
308 | AbstractDao.getCurrentSession().getTransaction().commit(); |
413 | 309 | ||
414 | 1.5.0/docs/api/java/lang/System.html">System.out.println(FilesUtils.getMD5Checksum(new java.io.1.5.0/docs/api/java/io/File.html">File("/Volumes/Home/jorgemachado/Downloads/CV_PedroPepe_Docente4.pdf"))); |
310 | System.out.println(FilesUtils.getMD5Checksum(new java.io.File("/Volumes/Home/jorgemachado/Downloads/CV_PedroPepe_Docente4.pdf"))); |
415 | } |
311 | }*/ |
416 | 312 | ||
417 | 313 | ||
418 | } |
314 | } |