001: package org.contineo.core.doxter.filesystem;
002:
003: import java.io.File;
004: import java.io.InputStream;
005:
006: import org.apache.commons.logging.Log;
007: import org.apache.commons.logging.LogFactory;
008: import org.contineo.core.FileBean;
009: import org.contineo.core.doxter.Storer;
010: import org.contineo.util.Context;
011: import org.contineo.util.config.BackupConfig;
012: import org.contineo.util.config.SettingsConfig;
013:
014: /**
015: * This class is an implementation of the Storer interface to persist documents
016: * in the filesystem.
017: *
018: * @author Michael Scholz
019: */
020: public class FSStorer implements Storer {
021: protected static Log logger = LogFactory.getLog(FSStorer.class);
022:
023: private SettingsConfig settingsConfig;
024:
025: public FSStorer() {
026: }
027:
028: public SettingsConfig getSettingsConfig() {
029: return settingsConfig;
030: }
031:
032: public void setSettingsConfig(SettingsConfig settingsConfig) {
033: this .settingsConfig = settingsConfig;
034: }
035:
036: /**
037: * @see org.contineo.core.doxter.Storer#store(java.io.InputStream,
038: * java.lang.String, java.lang.String)
039: */
040: public boolean store(InputStream stream, String menupath,
041: String filename, String version) {
042: try {
043: String path = new StringBuilder(settingsConfig
044: .getValue("docdir")).append(menupath).append(
045: File.separator).toString();
046: FileBean.createDir(path);
047: FileBean.writeFile(stream, new StringBuilder(path).append(
048: filename).toString());
049:
050: // File f = new File(path + filename);
051: BackupConfig conf = (BackupConfig) Context.getInstance()
052: .getBean(BackupConfig.class);
053:
054: if (conf.isEnabled()) {
055: String backupPath = conf.getLocation();
056:
057: // store a backup of the document
058: FileBean.copyDir(path, new StringBuilder(backupPath)
059: .append(menupath).toString());
060: }
061: } catch (Exception e) {
062: logger.error(e.getMessage(), e);
063: return false;
064: }
065:
066: return true;
067: }
068:
069: /*
070: *
071: * @see org.contineo.core.doxter.Storer#delete(java.lang.String,
072: * java.lang.String)
073: */
074: public boolean delete(String menupath) {
075: SettingsConfig settings = (SettingsConfig) Context
076: .getInstance().getBean(SettingsConfig.class);
077: String path = settings.getValue("docdir");
078: BackupConfig backup = (BackupConfig) Context.getInstance()
079: .getBean(BackupConfig.class);
080: String backupPath = backup.getLocation();
081: boolean delOrg = FileBean.deleteDir(new StringBuilder(path)
082: .append(menupath).toString());
083: boolean delBac = true;
084:
085: if (backup.isEnabled()) {
086: delBac = FileBean.deleteDir(new StringBuilder(backupPath)
087: .append(menupath).toString());
088: }
089:
090: return (delOrg && delBac);
091: }
092:
093: public boolean restoreAll() {
094: SettingsConfig settings = (SettingsConfig) Context
095: .getInstance().getBean(SettingsConfig.class);
096: String path = settings.getValue("docdir");
097: BackupConfig backup = (BackupConfig) Context.getInstance()
098: .getBean(BackupConfig.class);
099: String backupPath = backup.getLocation();
100: boolean varBack = false;
101: boolean deleted = FileBean.deleteDir(path);
102:
103: if (deleted) {
104: boolean copied = FileBean.copyDir(backupPath, path);
105:
106: if (copied) {
107: varBack = true;
108: } else {
109: varBack = false;
110: }
111: } else {
112: varBack = false;
113: }
114:
115: return varBack;
116: }
117: }
|