001 /* 002 * Copyright 2001,2004 The Apache Software Foundation. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.apache.commons.jjar; 018 019 import java.util.Properties; 020 import java.util.StringTokenizer; 021 import java.util.ArrayList; 022 import java.util.Iterator; 023 import java.util.List; 024 025 import java.io.InputStream; 026 027 import java.net.URL; 028 import java.net.URLConnection; 029 030 public class RepositoryProps extends Properties implements Repository 031 { 032 private List packageList = null; 033 private DependencyEngine de = new DependencyEngine(); 034 035 public void load( URL url ) 036 { 037 try 038 { 039 URLConnection conn = url.openConnection(); 040 InputStream is = conn.getInputStream(); 041 042 load(is); 043 044 is.close(); 045 } 046 catch(Exception e ) 047 { 048 } 049 050 /* 051 * get the list of packages 052 */ 053 054 String packages = getProperty("packages"); 055 056 packages.trim(); 057 058 packageList = makeList( packages ); 059 060 /* 061 * setup the dependency engine 062 */ 063 064 Iterator i = packageList.iterator(); 065 066 while( i.hasNext() ) 067 { 068 /* 069 * for each package 070 */ 071 072 String p = (String) i.next(); 073 074 // System.out.println(" processing " + p ); 075 076 /* 077 * get the dependency list 078 */ 079 080 String depstr = getProperty( p + ".dependencies"); 081 082 depstr.trim(); 083 084 List dep = makeList( depstr ); 085 086 /* 087 * now, remove an <none> marks 088 */ 089 090 Iterator ii = dep.iterator(); 091 092 List deplist = new ArrayList(); 093 094 while( ii.hasNext() ) 095 { 096 String sdep = (String) ii.next(); 097 098 if ( !sdep.equals("<none>")) 099 deplist.add( sdep ); 100 } 101 102 try 103 { 104 de.addProject( p, deplist, p ); 105 } 106 catch( Exception e ) 107 { 108 System.out.println("Repository.Repository() : " + p + " : " + e ); 109 } 110 } 111 } 112 113 public List getDependencyList( String pkg, String version ) 114 { 115 if( isPackage( pkg )) 116 return de.getDependencies( pkg ); 117 118 return new ArrayList(); 119 } 120 121 public Iterator getPackageListIter() 122 { 123 return packageList.iterator(); 124 } 125 126 public int getPackageCount() 127 { 128 return packageList.size(); 129 } 130 131 public String getPackageDefaultVersion( String pkg ) 132 { 133 if (isPackage( pkg ) ) 134 { 135 return getProperty( pkg + ".default" ); 136 } 137 138 return null; 139 } 140 141 public String getPackageDescription( String pkg ) 142 { 143 if (isPackage( pkg ) ) 144 { 145 return getProperty( pkg + ".desc" ); 146 } 147 148 return null; 149 } 150 151 public String getFetchTarget( String pkg, String version ) 152 { 153 if (!isPackage( pkg )) 154 return null; 155 156 String ft = getProperty( pkg + "." + version + ".jar"); 157 158 return ft; 159 } 160 161 public boolean isPackage( String pkg ) 162 { 163 Iterator i = packageList.iterator(); 164 165 while( i.hasNext() ) 166 { 167 String p = (String) i.next(); 168 169 if (p.equals( pkg ) ) 170 return true; 171 } 172 173 return false; 174 } 175 176 public List getPackageVersionList( String pkg ) 177 { 178 if(!isPackage( pkg )) 179 return null; 180 181 return makeList( getProperty( pkg + ".version" ) ); 182 } 183 184 private List makeList( String thing ) 185 { 186 StringTokenizer st = new StringTokenizer( thing, ", "); 187 188 List list = new ArrayList(); 189 190 while(st.hasMoreTokens() ) 191 { 192 list.add( st.nextToken().trim() ); 193 } 194 195 return list; 196 } 197 } 198 199 200