View Javadoc

1   /**
2    * This file Copyright (c) 2003-2010 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.module.exchangesimple;
35  
36  import java.io.File;
37  import java.util.Map;
38  import java.util.HashMap;
39  
40  import org.slf4j.Logger;
41  import org.slf4j.LoggerFactory;
42  
43  /**
44   * Container for all information about activated (to be) content.
45   * @author Sameer Charles $Id: ActivationContent.java 38418 2010-10-27 09:40:26Z had $
46   */
47  public class ActivationContent implements Cloneable {
48  
49      private static final Logger log = LoggerFactory.getLogger(ActivationContent.class);
50      /**
51       * Collection of files to be transfered during activation.
52       */
53      private Map<String, File> fileList = new HashMap<String, File>();
54  
55      /**
56       * Collection of properties describing activated content (path, repo, etc). Supported property keys are listed in {@link BaseSyndicatorImpl}.
57       */
58      private Map<String, String> properties = new HashMap<String, String>();
59  
60      /**
61       * Adds resource to the list of files for transfer.
62       */
63      public void addFile(String resourceId, File file) {
64          this.fileList.put(resourceId, file);
65      }
66  
67      public File getFile(String resourceId) {
68          return (File) this.fileList.get(resourceId);
69      }
70  
71      public void removeFile(String resourceId) {
72          this.fileList.remove(resourceId);
73      }
74  
75      /**
76       * Cats collection of all files. This collection is not a copy, but a reference to internal collection!
77       */
78      public Map<String, File> getFiles() {
79          return this.fileList;
80      }
81  
82      /**
83       * Adds property to the list of properties. Null values are automatically converted to empty strings. If the key already exists, existing value will be replaced with the one provided to this method.
84       */
85      public void addProperty(String key, String value) {
86          if (value == null) {
87              value = "";
88          }
89          this.properties.put(key, value);
90      }
91  
92      /**
93       * @see #setProperty(String, String)
94       */
95      public void setProperty(String key, String value) {
96          if (value == null) {
97              value = "";
98          }
99          // HashMap replaces existing value on put
100         this.properties.put(key, value);
101     }
102 
103     /**
104      * Gets value of property with specified key or null if such property was not set.
105      */
106     public String getproperty(String key) {
107         return (String) this.properties.get(key);
108     }
109 
110     public void removeProperty(String key) {
111         this.properties.remove(key);
112     }
113 
114     /**
115      * Gets collection of all properties. Such collection is not a copy, but the reference to internal collection!
116      */
117     public Map<String, String> getProperties() {
118         return this.properties;
119     }
120 
121     public Object clone() {
122         try {
123             ActivationContent clone = (ActivationContent) super.clone();
124             // need to clone maps otherwise cloned object would reference the original ones
125             clone.properties = new HashMap<String, String>(this.properties);
126             clone.fileList = new HashMap<String, File>(this.fileList);
127             return clone;
128         } catch (CloneNotSupportedException e) {
129             // should never be thrown since we support cloning.
130             log.error("Failed to clone itself with " + e.getLocalizedMessage(), e);
131             return null;
132         }
133     }
134 }