OSDN Git Service

remove singleton function from table accessor
[amulettoolsmh4/main.git] / model / seed2skill2table.py
index 4e01686..5608a9d 100644 (file)
@@ -10,7 +10,7 @@ import csv
 
 import amulettable
 import skilltable
-import singleton
+#import singleton
 
 # for Seed2 to skill2
 u""" SEED2から各お守りの第2スキルへのテーブル """
@@ -132,6 +132,8 @@ class Seed2Skill2TableGenerator(object):
         csv_reader.next()   # skip header row
         for row in csv_reader:
             amulet_name = row[0].strip()
+            #if not isinstance(amulet_name, unicode):
+            #    amulet_name = unicode(amulet_name, u"utf-8")
             skill2_file = row[1].strip()
             amulet_id = amu_name2id[amulet_name]
             table_name = NAME.format(amulet_id=amulet_id)
@@ -159,16 +161,21 @@ class Seed2Skill2TableGenerator(object):
             insert_values = {}
 
             reader.next()   # skip header row
-            for row in reader:  # (skill_name, min1, max1)
+            for row in reader:
                 seed2 = int(row[0].strip())
-                skill_ids = [skill_name2id[x.strip()] for x in row[1:]]
+                skill_ids = []
+                for skill_name in row[1:]:
+                    skill_name = skill_name.strip()
+                    #if not isinstance(skill_name, unicode):
+                    #    skill_name = unicode(skill_name, u"utf-8")
+                    skill_ids.append(skill_name2id[skill_name])
 
                 sql = INSERT_SQL.format(table_name=table_name)
                 db_cursor.execute(sql, tuple([seed2] + skill_ids))
 
 class Seed2Skill2TableAccessor(object):
     u""" Seed2とスキル名の組み合わせテーブルへのアクセス用クラス """
-    __metaclass__ = singleton.Singleton
+    #__metaclass__ = singleton.Singleton
     def __init__(self, db_cursor):
         u""" db_cursor: cursor of sqlite3 database """
         self._cursor = db_cursor
@@ -207,10 +214,14 @@ class Seed2Skill2TableAccessor(object):
             where_sql = " where " + " and ".join(where_list)
             sql = SELECT_SEED2_SQL.format(table_name=table_name) + where_sql
             self._cursor.execute(sql)
-            if len(result_set) == 0:
-                result_set = set([x[0] for x in self._cursor.fetchall()])
+            seed2s = set([x[0] for x in self._cursor.fetchall()])
+            if len(seed2s) == 0:
+                continue
+
+            if len(result_set) != 0:
+                result_set &= seed2s
             else:
-                result_set = result_set & set([x[0] for x in self._cursor.fetchall()])
+                result_set = seed2s
 
         return result_set