001 /* 002 * $RCSfile: SelectorAssignmentStrategy.java,v $ 003 * 004 * Created on April 3, 2006, 11:37 AM 005 * 006 * This file is part of the STAR Scheduler. 007 * Copyright (c) 2002-2003 STAR Collaboration - Brookhaven National Laboratory 008 * 009 * STAR Scheduler is free software; you can redistribute it and/or modify 010 * it under the terms of the GNU General Public License as published by 011 * the Free Software Foundation; either version 2 of the License, or 012 * (at your option) any later version. 013 * 014 * STAR Scheduler is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017 * GNU General Public License for more details. 018 * 019 * You should have received a copy of the GNU General Public License 020 * along with STAR Scheduler; if not, write to the Free Software 021 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 022 */ 023 package gov.bnl.star.offline.scheduler.policy; 024 025 import gov.bnl.star.offline.scheduler.CatalogQuery; 026 import gov.bnl.star.offline.scheduler.*; 027 import gov.bnl.star.offline.scheduler.catalog.*; 028 import gov.bnl.star.offline.scheduler.catalog.QueryResult; 029 import gov.bnl.star.offline.scheduler.policy.copyselector.CopySelector; 030 import gov.bnl.star.offline.scheduler.policy.copyselector.CopySelectorFactory; 031 import gov.bnl.star.offline.scheduler.request.Request; 032 import java.net.*; 033 import java.util.*; 034 035 036 /** 037 * 038 * @author Gabriele Carcassi 039 * @version $Revision: 1.11 $ $Date: 2006/11/21 00:41:32 $ 040 */ 041 public class SelectorAssignmentStrategy implements AssignmentStrategy { 042 public FileAssignment assignFiles(Request request, QueryResult[] results, 043 CatalogQuery[] queries, List fileList) { 044 FileAssignment assignment = new FileAssignment( 045 request.getResource("FilesPerProcess").getMin(), 046 request.getResource("FilesPerProcess").getMax()); 047 048 for (int n = 0; n < results.length; n++) { 049 050 System.out.print("Selecting files for query " + (n + 1) + "..."); 051 052 CopySelector selector = CopySelectorFactory.createCopySelector(queries[n], request); 053 int nFiles = selector.selectCopy(results[n], queries[n], assignment); 054 055 System.out.print(" " + nFiles + " files selected"); 056 057 if(nFiles == queries[n].getFilesReturned()) 058 System.out.println("."); 059 else 060 System.out.println(", " + (queries[n].getFilesReturned() - nFiles) + " duplicates or inaccessible files removed."); 061 062 } 063 064 for (int n = 0; n < fileList.size(); n++) { 065 assignment.add(new PhysicalFile((URL)fileList.get(n))); 066 } 067 068 return assignment; 069 } 070 }