configurationengine/source/cone/report/generation_report.py
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
child 4 0951727b8815
permissions -rw-r--r--
ConE 1.2.11 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     1
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     3
# All rights reserved.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     4
# This component and the accompanying materials are made available
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     6
# which accompanies this distribution, and is available
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     8
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     9
# Initial Contributors:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    11
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    12
# Contributors:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    13
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    14
# Description:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    15
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    16
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    17
import os, logging, pickle
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    18
import time
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    19
from time import strftime
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    20
from cone.public import api, exceptions, utils, plugin
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    21
from cone.confml import model
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    22
from cone.report import report_util 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    23
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    24
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    25
SERIALISATION_FORMAT = 'pickle'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    26
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    27
def save_report_data(rep_data, file_path):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    28
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    29
    Save report data into an intermediary report data file.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    30
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    31
    dir = os.path.dirname(file_path)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    32
    if dir != '' and not os.path.exists(dir):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    33
        os.makedirs(dir)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    34
    f = open(file_path, 'wb')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    35
    try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    36
        if SERIALISATION_FORMAT == 'yaml':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    37
            yaml.dump(rep_data, f)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    38
        elif SERIALISATION_FORMAT == 'pickle':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    39
            pickle.dump(rep_data, f)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    40
        elif SERIALISATION_FORMAT == 'pickle/2':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    41
            pickle.dump(rep_data, f, 2)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    42
    finally:    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    43
        f.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    44
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    45
def load_report_data(file_path):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    46
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    47
    Load report data from an intermediary report data file.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    48
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    49
    try:        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    50
        f = open(file_path, "rb")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    51
        if SERIALISATION_FORMAT == 'yaml':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    52
            data = yaml.load(f)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    53
        elif SERIALISATION_FORMAT == 'pickle':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    54
            data = pickle.load(f)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    55
        elif SERIALISATION_FORMAT == 'pickle/2':
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    56
            data = pickle.load(f)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    57
    finally:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    58
        f.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    59
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    60
    data.label = get_generation_run_label(file_path)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    61
    return data
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    62
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    63
def get_generation_run_label(datafile_path):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    64
    filename = os.path.split(datafile_path)[1]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    65
    filename_noext = os.path.splitext(filename)[0]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    66
    return filename_noext
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    67
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    68
def _get_parent_sequence_or_self(feature):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    69
    current = feature._parent
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    70
    while current is not None:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    71
        if isinstance(current, api.FeatureSequence):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    72
            return current
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    73
        current = current._parent
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    74
    return feature
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    75
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    76
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    77
def generate_report(rep_data, report_file_path, template_file_path=None, template_paths=[], report_options=[]):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    78
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    79
    Generate a generation report based on the given report data.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    80
    @param rep_data: The report data.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    81
    @param report_file_path: Path to the report file to generate.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    82
    @param template_file_path: Path to the template file to use.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    83
        If None, the default template is used.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    84
    @param template_paths: the additional search paths for templates. The default location cone.report is 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    85
    always included.   
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    86
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    87
    # Determine the template file and directory to use
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    88
    if template_file_path is None:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    89
        template_file_path = 'gen_report_template.html'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    90
    contexts = [report_data.context for report_data in rep_data]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    91
    report_data = {'rep_data' : rep_data, 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    92
                   'report_options' : report_options,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    93
                   'merged_context' : plugin.MergedContext(contexts)}
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    94
    report_util.generate_report(template_file_path, report_file_path, report_data, template_paths)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    95
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    96
def normalize_slash(path):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    97
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    98
    Normalize backslashes to slashes to make testing easier (no differences
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    99
    between reports in linux and windows).
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   100
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   101
    return path.replace('\\', '/')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   102
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   103
class ReportData(object):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   104
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   105
    Data object that stores all information used in report generation.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   106
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   107
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   108
    def __init__(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   109
        self.project = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   110
        self.generation_timestamp = time.time()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   111
        self.generation_time = strftime("%d.%m.%Y %H:%M:%S")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   112
        self.options = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   113
        self.duration = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   114
        self.output_dir = os.getcwd()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   115
        self.project_dir = ''
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   116
        self.context = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   117
        self.label = ''
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   118
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   119
    def set_output_dir(self, dir):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   120
        self.output_dir = os.path.abspath(os.path.normpath(dir))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   121
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   122
    def set_duration(self, duration):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   123
        self.duration = duration
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   124
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   125
    def set_options(self, options):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   126
        self.options = options
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   127
        self.project_dir = os.path.abspath(options.project)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   128
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   129
    def set_report_filename(self, filename):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   130
        self.report_filename = filename
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   131
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   132
    def __repr__(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   133
        return "ReportData(%s)" % [self.generation_timestamp, 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   134
                                   self.generation_time,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   135
                                   self.options,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   136
                                   self.duration,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   137
                                   self.output_dir,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   138
                                   self.project_dir]    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   139
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   140
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   141
class RefLine(object):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   142
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   143
    Data object that stores information for one ref in report generation.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   144
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   145
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   146
    def __init__(self, ref, type):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   147
        self.ref = ref
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   148
        self.feat_type = type 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   149
        self.feat_name = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   150
        self.feat_value = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   151
        self.config_path = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   152
        self.impls = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   153
        self.output = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   154
        self.nbr_impls = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   155
        self.nbr_outputfiles = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   156
        self.datas = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   157
        self.nbr_of_datas = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   158
        self.nbr_of_rows = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   159
        self.seq_data = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   160
        self.is_temp_feature = False
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   161
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   162
    def add_impl(self, impl_file, impl_type, outputfiles):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   163
        self.impls.append(ImplLine(impl_file, impl_type, outputfiles))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   164
        self.nbr_impls = len(self.impls)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   165
        self.nbr_outputfiles = len(outputfiles) + self.nbr_outputfiles
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   166
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   167
    def add_data(self, layer, value):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   168
        self.datas.append(DataLine(layer,value))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   169
        self.nbr_of_datas = len(self.datas)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   170
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   171
    def add_sequence(self, subsetting, values):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   172
        self.seq_data.append([subsetting, values])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   173
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   174
    def set_feat_name(self, name):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   175
        self.feat_name = name
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   176
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   177
    def set_feat_value(self, value):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   178
        self.feat_value = value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   179
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   180
    def set_config_path(self, filename):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   181
        self.config_path = normalize_slash(os.path.normpath(filename))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   182
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   183
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   184
class ImplLine():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   185
    def __init__(self, impl_file, impl_type, outputfiles, generation_runs=[]):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   186
        self.name = normalize_slash(os.path.normpath(impl_file))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   187
        self.type = impl_type
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   188
        files = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   189
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   190
        for outputfile in outputfiles:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   191
            files.append(Outputfile(outputfile))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   192
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   193
        self.outputfiles = files
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   194
        self.generation_runs = generation_runs
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   195
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   196
class Outputfile():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   197
    def __init__(self, filename):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   198
        self.filename = normalize_slash(os.path.normpath(filename))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   199
        self.abs_filename = normalize_slash(os.path.abspath(filename))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   200
        self.exists = os.path.isfile(self.abs_filename)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   201
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   202
    def __eq__(self, other):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   203
        if type(self) is type(other):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   204
            return self.filename == other.filename
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   205
        else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   206
            return False
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   207
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   208
class DataLine():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   209
    def __init__(self, layer, value):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   210
        self.layer = normalize_slash(os.path.normpath(layer))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
   211
        self.value = value