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 }