001 /* 002 $Id: DaemonPluginManager.java,v 1.6 2003/03/26 23:07:43 culdesac Exp $ 003 */ 004 005 package sharpster.daemon.daemonplugin; 006 007 import java.util.LinkedList; 008 import java.util.ListIterator; 009 010 import sharpster.common.*; 011 012 /** 013 * Class responsible for interpreting plug-in data on behalf of the 014 * File Management Module 015 */ 016 public class DaemonPluginManager extends PluginManager { 017 018 /** 019 * Extract the <code>PluginData</code> stored in the collection 020 * and calls the accurate plug-ins. 021 */ 022 public ResponseCollection extractParts(FileCollection originalFiles, 023 String role) { 024 FileCollection retval = new FileCollection(); 025 FileResponse respval = new FileResponse(); 026 ResponseCollection resp = new ResponseCollection(); 027 028 for (int i = 0; i < originalFiles.getFileCount(); i++) { 029 SharedFile origFile = originalFiles.getFile(i); 030 PluginData pd = origFile.getPluginData(); 031 if (null != pd) { 032 PartOfFilePlugin plugin = getPluginFromName(pd.getPluginName()); 033 //retval.addFile(plugin.extractParts(origFile, role)); 034 resp.appendCollection(plugin.extractParts(origFile, role)); 035 } 036 else { 037 System.out.println("DP::Warning: Plugin data is null"); 038 //retval.addFile(origFile); 039 retval.addFile(origFile); 040 respval.setFiles(retval); 041 resp.addResponse(respval); 042 } 043 } 044 045 return resp; 046 } 047 048 /** 049 * Calls the accurate plug-in to execute the insertPart command. 050 */ 051 public ResponseCollection mergeParts(FileCollection originalFiles, 052 FileCollection partOfFiles, 053 String role) { 054 FileCollection retval = new FileCollection(); 055 FileResponse respval = new FileResponse(); 056 ResponseCollection resp = new ResponseCollection(); 057 058 for (int i = 0; i < partOfFiles.getFileCount(); i++) { 059 /* get the part file */ 060 SharedFile partFile = partOfFiles.getFile(i); 061 for (int j = 0; j < originalFiles.getFileCount(); j++) { 062 /* search for the originalfile */ 063 SharedFile origFile = originalFiles.getFile(j); 064 if (origFile.getFullPath().equals(partFile.getFullPath())) { 065 PluginData pd = origFile.getPluginData(); 066 if (pd != null) { 067 PartOfFilePlugin pp = getPluginFromName(pd.getPluginName()); 068 //retval.addFile(pp.mergeParts(origFile, partFile, role)); 069 resp.appendCollection(pp.mergeParts(origFile, partFile, role)); 070 break; 071 } 072 else { 073 System.out.println("DP::Warning: Plugin data is null"); 074 //retval.addFile(partFile); 075 retval.addFile(partFile); 076 respval.setFiles(retval); 077 resp.addResponse(respval); 078 } 079 } 080 } 081 } 082 083 return resp; 084 } 085 }