1#************************************************************** 2# 3# Licensed to the Apache Software Foundation (ASF) under one 4# or more contributor license agreements. See the NOTICE file 5# distributed with this work for additional information 6# regarding copyright ownership. The ASF licenses this file 7# to you under the Apache License, Version 2.0 (the 8# "License"); you may not use this file except in compliance 9# with the License. You may obtain a copy of the License at 10# 11# http://www.apache.org/licenses/LICENSE-2.0 12# 13# Unless required by applicable law or agreed to in writing, 14# software distributed under the License is distributed on an 15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16# KIND, either express or implied. See the License for the 17# specific language governing permissions and limitations 18# under the License. 19# 20#************************************************************** 21 22from pseudo import PseudoSet,PseudoOrderedDict 23from time import gmtime, strftime 24 25class SdfData: 26 _filename = ""; 27 _dict = PseudoOrderedDict() 28 _languages_found = []; 29 30 def __init__ (self, filename=""): 31 self._filename = filename 32 33 def __getitem__(self, key): 34 if self._dict.has_key(key): 35 return self._dict[key] 36 else: 37 return None 38 39 def has_key(self, key): 40 return self._dict.has_key(key) 41 42 def __setitem__(self, key, value): 43 self._dict[key] = value 44 45 def get_languages_found_in_sdf(self): 46 return PseudoSet(self._languages_found) 47 48 def read(self): 49 try: 50 f = open(self._filename, "r") 51 lines = [line.rstrip('\n') for line in f.readlines()] 52 except IOError: 53 print "ERROR: Trying to read "+ self._filename 54 raise 55 else: 56 f.close() 57 for line in lines: 58 entity = SdfEntity() 59 entity.set_properties(line) 60 self._dict[entity.get_id()] = entity 61 self._languages_found.append(entity.langid) 62 63 def write(self, filename): 64 try: 65 f = open(filename, "w+") 66 for value in self._dict.itervalues(): 67 #f.write( repr(value)+"\n" ) 68 f.write(value + "\n") 69 except IOError: 70 print "ERROR: Trying to write " + filename 71 raise 72 else: 73 f.close() 74 75import sys 76class SdfEntity: 77 # Sdf format columns 78 project = "" 79 source_file = "" 80 dummy1 = "" 81 resource_type = "" 82 gid = "" 83 lid = "" 84 helpid = "" 85 platform = "" 86 dummy2 = "" 87 langid = "" 88 text = "" 89 helptext = "" 90 quickhelptext = "" 91 title = "" 92 date = "" 93 94 import const 95 const._PROJECT_POS = 0 96 const._SOURCE_FILE_POS = 1 97 const._DUMMY1_POS = 2 98 const._RESOURCE_TYPE_POS = 3 99 const._GID_POS = 4 100 const._LID_POS = 5 101 const._HELPID_POS = 6 102 const._PLATFORM_POS = 7 103 const._DUMMY2_POS = 8 104 const._LANGID_POS = 9 105 const._TEXT_POS = 10 106 const._HELPTEXT_POS = 11 107 const._QUICKHELPTEXT_POS = 12 108 const._TITLE_POS = 13 109 const._DATE_POS = 14 110 111 def __init__(self, project="", source_file="", dummy1="0", resource_type="", gid="", lid="", helpid="", platform="", dummy2="0", langid="", 112 text="", helptext="", quickhelptext="", title="", date=""): 113 self.project = project; 114 self.source_file = source_file; 115 self.dummy1 = dummy1; 116 self.resource_type = resource_type; 117 self.gid = gid; 118 self.lid = lid; 119 self.helpid = helpid; 120 self.platform = platform; 121 self.dummy2 = dummy2; 122 self.langid = langid; 123 self.text = text; 124 self.helptext = helptext; 125 self.quickhelptext = quickhelptext; 126 self.title = title; 127 if date != "": 128 self.date = date; 129 else: 130 self.date = strftime("%Y-%m-%d %H:%M:%S",gmtime()) 131 132 133 def set_properties(self, line): 134 splitted = line.split("\t") 135 if len(splitted) == 15: 136 self.project = splitted[ self.const._PROJECT_POS ] 137 self.source_file = splitted[ self.const._SOURCE_FILE_POS ] 138 self.dummy1 = splitted[ self.const._DUMMY1_POS ] 139 self.resource_type = splitted[ self.const._RESOURCE_TYPE_POS ] 140 self.gid = splitted[ self.const._GID_POS ] 141 self.lid = splitted[ self.const._LID_POS ] 142 self.helpid = splitted[ self.const._HELPID_POS ] 143 self.platform = splitted[ self.const._PLATFORM_POS ] 144 self.dummy2 = splitted[ self.const._DUMMY2_POS ] 145 self.langid = splitted[ self.const._LANGID_POS ] 146 self.text = splitted[ self.const._TEXT_POS ] 147 self.helptext = splitted[ self.const._HELPTEXT_POS ] 148 self.quickhelptext = splitted[ self.const._QUICKHELPTEXT_POS ] 149 self.title = splitted[ self.const._TITLE_POS ] 150 self.date = splitted[ self.const._DATE_POS ] 151 152 def get_file_id(self): 153 return self.project + "\\" + self.source_file 154 155 def get_resource_path(self): 156 return self.source_file[0:self.source_file.rfind( "\\" )-1] 157 158 def __str__(self): 159 return ''.join([self.project, "\t", self.source_file, "\t", self.dummy1, "\t", self.resource_type, "\t" , 160 self.gid, "\t", self.lid, "\t", self.helpid, "\t", self.platform, "\t", self.dummy2, "\t" , self.langid, 161 "\t", self.text, "\t", self.helptext, "\t", self.quickhelptext, "\t" , self.title, "\t", self.date ]) 162 163 def get_id(self): 164 return ''.join([self.project, self.gid, self.lid, self.source_file, self.resource_type, self.platform, self.helpid, self.langid]) 165