01: package org.contineo.core.transfer;
02:
03: import java.io.File;
04:
05: import org.apache.commons.logging.Log;
06: import org.apache.commons.logging.LogFactory;
07: import org.contineo.core.FileBean;
08: import org.contineo.core.ZipBean;
09: import org.contineo.core.document.CheckinDocUtil;
10: import org.contineo.core.security.Menu;
11: import org.contineo.util.Context;
12: import org.contineo.util.config.SettingsConfig;
13:
14: /**
15: * Created on 16.12.2004
16: *
17: * @author micha
18: * @author Sebastian Stein
19: */
20: public class ZipImport {
21:
22: private String username;
23:
24: private String language;
25:
26: protected static Log logger = LogFactory.getLog(ZipImport.class);
27:
28: public ZipImport() {
29: username = "";
30: language = "";
31: }
32:
33: public void process(String zipsource, String language, Menu parent,
34: String user) {
35: this .username = user;
36: this .language = language;
37:
38: SettingsConfig settings = (SettingsConfig) Context
39: .getInstance().getBean(SettingsConfig.class);
40: String userpath = settings.getValue("userdir");
41:
42: if (!userpath.endsWith(File.pathSeparator)) {
43: userpath += File.pathSeparator;
44: }
45:
46: userpath += username + File.pathSeparator + "unzip";
47:
48: if (FileBean.exists(userpath)) {
49: FileBean.deleteDir(userpath);
50: }
51:
52: FileBean.createDir(userpath);
53: ZipBean.unzip(zipsource, userpath);
54:
55: File file = new File(userpath);
56: File[] files = file.listFiles();
57:
58: for (int i = 0; i < files.length; i++) {
59: addEntry(files[i], parent);
60: }
61:
62: FileBean.deleteDir(userpath);
63: }
64:
65: /**
66: * Stores a file in the repository of contineo and inserts some information
67: * in the database of contineo (menu, document, version, history,
68: * searchdocument).
69: *
70: * @param file
71: * @param parent
72: * @param language Two characters language of the file to add
73: */
74: protected void addEntry(File file, Menu parent) {
75: try {
76: String menuName = file.getName();
77: if (file.isDirectory()) { // creates a contineo folder
78: Menu menu = CheckinDocUtil.createFolder(parent,
79: menuName);
80:
81: File[] files = file.listFiles();
82:
83: for (int i = 0; i < files.length; i++) {
84: addEntry(files[i], menu);
85: }
86: } else { // creates a contineo document
87: CheckinDocUtil.createDocument(file, parent, username,
88: language);
89: }
90: } catch (Exception e) {
91: logger.error(e.getMessage(), e);
92: }
93: }
94: }
|