blob: aa1c7a0e20511e53d82d8912401f0c66343091a7 [file] [log] [blame]
#**************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#**************************************************************
from pseudo import PseudoSet,PseudoOrderedDict
from time import gmtime, strftime
class SdfData:
_filename = "";
_dict = PseudoOrderedDict()
_languages_found = [];
def __init__ (self, filename=""):
self._filename = filename
def __getitem__(self, key):
if key in self._dict:
return self._dict[key]
else:
return None
def has_key(self, key):
return key in self._dict
def __setitem__(self, key, value):
self._dict[key] = value
def get_languages_found_in_sdf(self):
return PseudoSet(self._languages_found)
def read(self):
try:
f = open(self._filename, "r")
lines = [line.rstrip('\n') for line in f.readlines()]
except IOError:
print("ERROR: Trying to read "+ self._filename)
raise
else:
f.close()
for line in lines:
entity = SdfEntity()
entity.set_properties(line)
self._dict[entity.get_id()] = entity
self._languages_found.append(entity.langid)
def write(self, filename):
try:
f = open(filename, "w+")
for value in self._dict.values():
#f.write( repr(value)+"\n" )
f.write(value + "\n")
except IOError:
print("ERROR: Trying to write " + filename)
raise
else:
f.close()
import sys
class SdfEntity:
# Sdf format columns
project = ""
source_file = ""
dummy1 = ""
resource_type = ""
gid = ""
lid = ""
helpid = ""
platform = ""
dummy2 = ""
langid = ""
text = ""
helptext = ""
quickhelptext = ""
title = ""
date = ""
import const
const._PROJECT_POS = 0
const._SOURCE_FILE_POS = 1
const._DUMMY1_POS = 2
const._RESOURCE_TYPE_POS = 3
const._GID_POS = 4
const._LID_POS = 5
const._HELPID_POS = 6
const._PLATFORM_POS = 7
const._DUMMY2_POS = 8
const._LANGID_POS = 9
const._TEXT_POS = 10
const._HELPTEXT_POS = 11
const._QUICKHELPTEXT_POS = 12
const._TITLE_POS = 13
const._DATE_POS = 14
def __init__(self, project="", source_file="", dummy1="0", resource_type="", gid="", lid="", helpid="", platform="", dummy2="0", langid="",
text="", helptext="", quickhelptext="", title="", date=""):
self.project = project;
self.source_file = source_file;
self.dummy1 = dummy1;
self.resource_type = resource_type;
self.gid = gid;
self.lid = lid;
self.helpid = helpid;
self.platform = platform;
self.dummy2 = dummy2;
self.langid = langid;
self.text = text;
self.helptext = helptext;
self.quickhelptext = quickhelptext;
self.title = title;
if date != "":
self.date = date;
else:
self.date = strftime("%Y-%m-%d %H:%M:%S",gmtime())
def set_properties(self, line):
splitted = line.split("\t")
if len(splitted) == 15:
self.project = splitted[ self.const._PROJECT_POS ]
self.source_file = splitted[ self.const._SOURCE_FILE_POS ]
self.dummy1 = splitted[ self.const._DUMMY1_POS ]
self.resource_type = splitted[ self.const._RESOURCE_TYPE_POS ]
self.gid = splitted[ self.const._GID_POS ]
self.lid = splitted[ self.const._LID_POS ]
self.helpid = splitted[ self.const._HELPID_POS ]
self.platform = splitted[ self.const._PLATFORM_POS ]
self.dummy2 = splitted[ self.const._DUMMY2_POS ]
self.langid = splitted[ self.const._LANGID_POS ]
self.text = splitted[ self.const._TEXT_POS ]
self.helptext = splitted[ self.const._HELPTEXT_POS ]
self.quickhelptext = splitted[ self.const._QUICKHELPTEXT_POS ]
self.title = splitted[ self.const._TITLE_POS ]
self.date = splitted[ self.const._DATE_POS ]
def get_file_id(self):
return self.project + "\\" + self.source_file
def get_resource_path(self):
return self.source_file[0:self.source_file.rfind( "\\" )-1]
def __str__(self):
return ''.join([self.project, "\t", self.source_file, "\t", self.dummy1, "\t", self.resource_type, "\t" ,
self.gid, "\t", self.lid, "\t", self.helpid, "\t", self.platform, "\t", self.dummy2, "\t" , self.langid,
"\t", self.text, "\t", self.helptext, "\t", self.quickhelptext, "\t" , self.title, "\t", self.date ])
def get_id(self):
return ''.join([self.project, self.gid, self.lid, self.source_file, self.resource_type, self.platform, self.helpid, self.langid])