Subversion Repositories bacoAlunos

Rev

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
}