| 1 7 package org.mmbase.applications.packaging.sharehandlers; 8 9 import java.io.DataOutputStream ; 10 import java.io.File ; 11 import java.io.FileOutputStream ; 12 import java.util.HashMap ; 13 import java.util.Iterator ; 14 15 import org.mmbase.applications.packaging.PackageManager; 16 import org.mmbase.applications.packaging.ShareManager; 17 import org.mmbase.applications.packaging.bundlehandlers.BundleContainer; 18 import org.mmbase.applications.packaging.packagehandlers.PackageContainer; 19 import org.mmbase.util.logging.Logger; 20 import org.mmbase.util.logging.Logging; 21 22 25 public class ShareFileWriter { 26 27 private static Logger log = Logging.getLoggerInstance(ShareFileWriter.class); 28 29 30 35 public static boolean write() { 36 String body = 37 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 38 "<!DOCTYPE shared PUBLIC \"-//MMBase/DTD shared config 1.0//EN\" \"http://www.mmbase.org/dtd/shared_1_0.dtd\">\n"; 39 body += "<shared>\n"; 40 41 body += writeSharedBundles(); 42 body += writeSharedPackages(); 43 body += writeUsers(); 44 body += writeGroups(); 45 body += writeSettings(); 46 body += writeProvidingPaths(); 47 48 body += "</shared>\n"; 49 50 String filename = PackageManager.getConfigPath() + File.separator + "packaging" + File.separator + "sharing.xml"; 51 saveFile(filename, body); 52 return true; 53 } 54 55 56 61 private static String writeSharedPackages() { 62 String result = "\t<packages>\n"; 63 Iterator e = ShareManager.getSharedPackages(); 64 while (e.hasNext()) { 65 PackageContainer p = (PackageContainer) e.next(); 66 ShareInfo shareinfo = p.getShareInfo(); 67 result += "\t\t<package name=\"" + p.getName() + "\" maintainer=\"" + p.getMaintainer() + "\" "; 68 result += "type=\"" + p.getType() + "\" "; 69 result += "versions=\"best\" "; 70 result += "active=\"" + shareinfo.isActive() + "\" "; 71 result += ">\n"; 72 Iterator e2 = shareinfo.getShareUsers(); 73 while (e2.hasNext()) { 74 ShareUser su = (ShareUser) e2.next(); 75 result += "\t\t\t<login user=\"" + su.getName() + "\" />\n"; 76 } 77 e2 = shareinfo.getShareGroups(); 78 while (e2.hasNext()) { 79 ShareGroup sg = (ShareGroup) e2.next(); 80 result += "\t\t\t<login group=\"" + sg.getName() + "\" />\n"; 81 } 82 result += "\t\t</package>\n"; 83 } 84 result += "\t</packages>\n"; 85 return result; 86 } 87 88 89 94 private static String writeSharedBundles() { 95 String result = "\t<bundles>\n"; 96 Iterator e = ShareManager.getSharedBundles(); 97 while (e.hasNext()) { 98 BundleContainer b = (BundleContainer) e.next(); 99 ShareInfo shareinfo = b.getShareInfo(); 100 result += "\t\t<bundle name=\"" + b.getName() + "\" maintainer=\"" + b.getMaintainer() + "\" "; 101 result += "type=\"" + b.getType() + "\" "; 102 result += "versions=\"best\" "; 103 result += "active=\"" + shareinfo.isActive() + "\" "; 104 result += ">\n"; 105 Iterator e2 = shareinfo.getShareUsers(); 106 while (e2.hasNext()) { 107 ShareUser su = (ShareUser) e2.next(); 108 result += "\t\t\t<login user=\"" + su.getName() + "\" />\n"; 109 } 110 e2 = shareinfo.getShareGroups(); 111 while (e2.hasNext()) { 112 ShareGroup sg = (ShareGroup) e2.next(); 113 result += "\t\t\t<login group=\"" + sg.getName() + "\" />\n"; 114 } 115 result += "\t\t</bundle>\n"; 116 } 117 result += "\t</bundles>\n"; 118 return result; 119 } 120 121 122 127 private static String writeUsers() { 128 String result = "\t<users>\n"; 129 Iterator e = ShareManager.getShareUsers(); 130 while (e.hasNext()) { 131 ShareUser su = (ShareUser) e.next(); 132 result += "\t\t<user name=\"" + su.getName() + "\" password=\"" + su.getPassword() + "\" "; 133 if (su.getMethod() != null) { 134 result += "method=\"" + su.getMethod() + "\" "; 135 } 136 if (su.getHost() != null) { 137 result += "ip=\"" + su.getHost() + "\" "; 138 } 139 result += "/>\n"; 140 } 141 result += "\t</users>\n"; 142 return result; 143 } 144 145 146 151 private static String writeProvidingPaths() { 152 String result = "\t<providingpaths>\n"; 153 HashMap has = ShareManager.getProvidingPaths(); 154 Iterator e = has.keySet().iterator(); 155 while (e.hasNext()) { 156 String key = (String ) e.next(); 157 String path = (String ) has.get(key); 158 result += "\t\t<providingpath method=\"" + key + "\" path=\"" + path + "\" />\n"; 159 } 160 result += "\t</providingpaths>\n"; 161 return result; 162 } 163 164 165 170 private static String writeGroups() { 171 String result = "\t<groups>\n"; 172 Iterator e = ShareManager.getShareGroups(); 173 while (e.hasNext()) { 174 ShareGroup sg = (ShareGroup) e.next(); 175 result += "\t\t<group name=\"" + sg.getName() + "\">\n"; 176 Iterator e2 = sg.getMembers(); 177 while (e2.hasNext()) { 178 ShareUser su = (ShareUser) e2.next(); 179 result += "\t\t\t<member user=\"" + su.getName() + "\" />\n"; 180 } 181 result += "\t\t</group>\n"; 182 } 183 result += "\t</groups>\n"; 184 return result; 185 } 186 187 188 193 private static String writeSettings() { 194 String result = "\t<settings>\n"; 195 result += "\t\t<providername>" + ShareManager.getProviderName() + "</providername>\n"; 196 result += "\t\t<callbackurl>" + ShareManager.getCallbackUrl() + "</callbackurl>\n"; 197 result += "\t</settings>\n"; 198 return result; 199 } 200 201 202 209 static boolean saveFile(String filename, String value) { 210 File sfile = new File (filename); 211 try { 212 DataOutputStream scan = new DataOutputStream (new FileOutputStream (sfile)); 213 scan.writeBytes(value); 214 scan.flush(); 215 scan.close(); 216 } catch (Exception e) { 217 log.error(Logging.stackTrace(e)); 218 } 219 return true; 221 } 222 223 } 224 225 | Popular Tags |