// listManager.java // ------------------------------------- // part of YACY // (C) by Michael Peter Christen; mc@anomic.de // first published on http://www.anomic.de // // This file ist contributed by Alexander Schier // // $LastChangedDate$ // $LastChangedRevision$ // $LastChangedBy$ // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Using this software in any meaning (reading, learning, copying, compiling, // running) means that you agree that the Author(s) is (are) not responsible // for cost, loss of data or any harm that may be caused directly or indirectly // by usage of this softare or this documentation. The usage of this software // is on your own risk. The installation and usage (starting/running) of this // software may allow other people or application to access your computer and // any attached devices and is highly dependent on the configuration of the // software which must be done by the user of the software; the author(s) is // (are) also not responsible for proper configuration and usage of the // software, even if provoked by documentation provided together with // the software. // // Any changes to this file according to the GPL as documented in the file // gpl.txt aside this file in the shipment you received can be done to the // lines that follows this copyright notice here, but changes must not be // done inside the copyright notive above. A re-distribution must contain // the intact and unchanged copyright notice. // Contributions and changes to the program code must be marked as such. package de.anomic.data; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.Vector; import de.anomic.plasma.plasmaSwitchboard; import de.anomic.server.serverCore; // The Naming of the functions is a bit strange... public class listManager { public static plasmaSwitchboard switchboard; public static File listsPath; //===============Listslists===================== // get an array of all Lists from a Config Property public static String[] getListslistArray(String Listname) { return switchboard.getConfig(Listname, "").split(","); } // removes a List from a Lists-List public static void removeListFromListslist(String ListName, String BlackList) { String[] Lists = getListslistArray(ListName); String temp = ""; for (int i=0; i <= Lists.length -1; i++) { if (!Lists[i].equals(BlackList) && !Lists[i].equals("")) { temp += Lists[i] + ","; } } if (temp.endsWith(",")) { //remove "," at end... temp = temp.substring(0, temp.length() -1); } if (temp.startsWith(",") ) { //remove "," at end... temp = temp.substring(1, temp.length()); } switchboard.setConfig(ListName, temp); } // add a new List to a List-List public static void addListToListslist(String ListName, String newList) { String[] Lists = getListslistArray(ListName); String temp = ""; for (int i = 0; i <= (Lists.length -1); i++) { temp += Lists[i] + ","; } temp += newList; switchboard.setConfig(ListName, temp); } // returns true, if the Lists-List contains the Listname public static boolean ListInListslist(String Listname, String BlackList) { String[] Lists = getListslistArray(Listname); for (int u=0; u <= Lists.length -1; u++) { if (BlackList.equals(Lists[u])) { return true; } } return false; } //================generel Lists================== // Gets a Array of all lines(Items) of a (list)file public static ArrayList getListArray(File listFile){ String line; ArrayList list = new ArrayList(); int count = 0; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(new FileInputStream(listFile))); while((line = br.readLine()) != null){ list.add(line); count++; } br.close(); } catch(IOException e) { // list is empty } finally { if (br!=null) try { br.close(); } catch (Exception e) {} } return list; } // Writes the Liststring to a file public static boolean writeList(File listFile, String out) { BufferedWriter bw = null; try { bw = new BufferedWriter(new PrintWriter(new FileWriter(listFile))); bw.write(out); bw.close(); return true; } catch(IOException e) { return false; } finally { if (bw!=null) try { bw.close(); } catch (Exception e) {} } } // overloaded function to write an array public static boolean writeList(File listFile, String[] list){ String out = ""; for(int i=0;i <= list.length; i++){ out += list[i] + serverCore.crlfString; } return writeList(listFile, out); //(File, String) } public static String getListString(String filename, boolean withcomments){ StringBuffer temp = new StringBuffer(); BufferedReader br = null; try{ File listFile; br = new BufferedReader(new InputStreamReader(new FileInputStream(listFile = new File(listsPath ,filename)))); temp.ensureCapacity((int) listFile.length()); // Read the List String line = ""; while ((line = br.readLine()) != null) { if ((!line.startsWith("#") || withcomments) || !line.equals("")) { //temp += line + serverCore.crlfString; temp.append(line) .append(serverCore.crlfString); } } br.close(); } catch (IOException e) { } finally { if (br!=null) try { br.close(); } catch (Exception e) {} } return temp.toString(); } // get a Directory Listing as a String Array public static String[] getDirListing(String dirname){ String[] fileListString; File[] fileList; final File dir = new File(dirname); if (dir != null ) { if (!dir.exists()) { dir.mkdir(); } fileList = dir.listFiles(); fileListString = new String[fileList.length]; for (int i=0; i<= fileList.length-1; i++) { fileListString[i]=fileList[i].getName(); } return fileListString; } return null; } public static ArrayList getDirsRecursive(File dir){ return getDirsRecursive(dir, true); } /** * Returns a List of all dirs and subdirs as File Objects * * Warning: untested */ public static ArrayList getDirsRecursive(File dir, boolean excludeDotfiles){ final File[] dirList = dir.listFiles(); final ArrayList resultList = new ArrayList(); ArrayList recursive; Iterator iter; for (int i=0;i -1){ for(int i=0;i