Ignore:
Timestamp:
09/24/15 10:59:05 (9 years ago)
Author:
sherbold
Message:
  • formatted code and added copyrights
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrossPare/src/de/ugoe/cs/cpdp/loader/DecentFolderLoader.java

    r32 r41  
     1// Copyright 2015 Georg-August-Universität Göttingen, Germany 
     2// 
     3//   Licensed under the Apache License, Version 2.0 (the "License"); 
     4//   you may not use this file except in compliance with the License. 
     5//   You may obtain a copy of the License at 
     6// 
     7//       http://www.apache.org/licenses/LICENSE-2.0 
     8// 
     9//   Unless required by applicable law or agreed to in writing, software 
     10//   distributed under the License is distributed on an "AS IS" BASIS, 
     11//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     12//   See the License for the specific language governing permissions and 
     13//   limitations under the License. 
     14 
    115package de.ugoe.cs.cpdp.loader; 
    216 
     
    1630public class DecentFolderLoader extends AbstractFolderLoader { 
    1731 
    18         /* 
    19          * (non-Javadoc) 
    20          *  
    21          * @see de.ugoe.cs.cpdp.loader.AbstractFolderLoader#getSingleLoader() 
    22          */ 
    23         @Override 
    24         protected SingleVersionLoader getSingleLoader() { 
    25                 return new DecentDataLoader(); 
    26         } 
    27          
    28         /** 
    29          * @see de.ugoe.cs.cpdp.loader.IVersionLoader#load() 
    30          */ 
    31         @Override 
    32         public List<SoftwareVersion> load() { 
    33                 final List<SoftwareVersion> versions = new LinkedList<SoftwareVersion>(); 
     32    /* 
     33     * (non-Javadoc) 
     34     *  
     35     * @see de.ugoe.cs.cpdp.loader.AbstractFolderLoader#getSingleLoader() 
     36     */ 
     37    @Override 
     38    protected SingleVersionLoader getSingleLoader() { 
     39        return new DecentDataLoader(); 
     40    } 
    3441 
    35                 final File dataDir = new File(path); 
    36                 final SingleVersionLoader instancesLoader = getSingleLoader(); 
     42    /** 
     43     * @see de.ugoe.cs.cpdp.loader.IVersionLoader#load() 
     44     */ 
     45    @Override 
     46    public List<SoftwareVersion> load() { 
     47        final List<SoftwareVersion> versions = new LinkedList<SoftwareVersion>(); 
    3748 
    38                 String projectName = dataDir.getName(); 
    39                  
    40                  
    41                 /* 
    42                  * The following lines make it possible, that we can have two different possibilities 
    43                  * to load data: 
    44                  * 1) From one project (e.g. /decent/input/project1) 
    45                  * 2) From more than one project (e.g. /decent/input/) 
    46                  *  
    47                  * Requirement is, that we have a folder structure like this: 
    48                  * "/decent/input/project1/model.decent, /decent/input/project2/model.decent, ..." 
    49                  *  
    50                  * In the first one the "else" is executed, therefore it will just search the folder "project1" 
    51                  * for a "model.decent" file. In the second one, it will look into each folder and searches for 
    52                  * "model.decent" files. 
    53                  */ 
    54                 for (File projectDir : dataDir.listFiles()) { 
    55                         if (projectDir.isDirectory()) { 
    56                                 projectName = projectDir.getName(); 
    57                                 for (File versionFile : projectDir.listFiles()) { 
    58                                         loadDataFromFile(versionFile,instancesLoader, projectName, versions); 
    59                                 } 
    60                         } else { 
    61                                 loadDataFromFile(projectDir, instancesLoader, projectName, versions); 
    62                         } 
    63                 } 
    64                 return versions; 
    65         } 
    66          
    67         /** 
    68          * Loads data from a file and adds the instances from the load method to the  
    69          * versions List. 
    70          *  
    71          * @param versionFile file to load from 
    72          * @param instancesLoader loader that should be used 
    73          * @param projectName name of the project which was loaded 
    74          * @param versions list, where the weka instances are added to 
    75          */ 
    76          
    77         private void loadDataFromFile(File versionFile,  
    78                         SingleVersionLoader instancesLoader, String projectName, List<SoftwareVersion> versions) { 
    79                 if (versionFile.isFile() 
    80                                 && instancesLoader.filenameFilter(versionFile 
    81                                                 .getName())) { 
    82                         String versionName = versionFile.getName(); 
    83                         Instances data = instancesLoader.load(versionFile); 
    84                         versions.add(new SoftwareVersion(projectName, 
    85                                         versionName, data)); 
    86                 } 
    87         } 
     49        final File dataDir = new File(path); 
     50        final SingleVersionLoader instancesLoader = getSingleLoader(); 
     51 
     52        String projectName = dataDir.getName(); 
     53 
     54        /* 
     55         * The following lines make it possible, that we can have two different possibilities to 
     56         * load data: 1) From one project (e.g. /decent/input/project1) 2) From more than one 
     57         * project (e.g. /decent/input/) 
     58         *  
     59         * Requirement is, that we have a folder structure like this: 
     60         * "/decent/input/project1/model.decent, /decent/input/project2/model.decent, ..." 
     61         *  
     62         * In the first one the "else" is executed, therefore it will just search the folder 
     63         * "project1" for a "model.decent" file. In the second one, it will look into each folder 
     64         * and searches for "model.decent" files. 
     65         */ 
     66        for (File projectDir : dataDir.listFiles()) { 
     67            if (projectDir.isDirectory()) { 
     68                projectName = projectDir.getName(); 
     69                for (File versionFile : projectDir.listFiles()) { 
     70                    loadDataFromFile(versionFile, instancesLoader, projectName, versions); 
     71                } 
     72            } 
     73            else { 
     74                loadDataFromFile(projectDir, instancesLoader, projectName, versions); 
     75            } 
     76        } 
     77        return versions; 
     78    } 
     79 
     80    /** 
     81     * Loads data from a file and adds the instances from the load method to the versions List. 
     82     *  
     83     * @param versionFile 
     84     *            file to load from 
     85     * @param instancesLoader 
     86     *            loader that should be used 
     87     * @param projectName 
     88     *            name of the project which was loaded 
     89     * @param versions 
     90     *            list, where the weka instances are added to 
     91     */ 
     92 
     93    private void loadDataFromFile(File versionFile, 
     94                                  SingleVersionLoader instancesLoader, 
     95                                  String projectName, 
     96                                  List<SoftwareVersion> versions) 
     97    { 
     98        if (versionFile.isFile() && instancesLoader.filenameFilter(versionFile.getName())) { 
     99            String versionName = versionFile.getName(); 
     100            Instances data = instancesLoader.load(versionFile); 
     101            versions.add(new SoftwareVersion(projectName, versionName, data)); 
     102        } 
     103    } 
    88104 
    89105} 
Note: See TracChangeset for help on using the changeset viewer.