diff --git a/src/Model/Friction/Friction.py b/src/Model/Friction/Friction.py index 45e17cc984f3ae8813317076ff21829b97564a28..1718ced9469ca2b74715f63956ac4edaee58a9d5 100644 --- a/src/Model/Friction/Friction.py +++ b/src/Model/Friction/Friction.py @@ -26,11 +26,21 @@ logger = logging.getLogger() class Friction(SQLSubModel): - def __init__(self, name: str = "", status=None): + _id_cnt = 0 + + def __init__(self, id: int = -1, name: str = "", + status=None): super(Friction, self).__init__() self._status = status + if id == -1: + self.id = Friction._id_cnt + else: + self.id = id + + Friction._id_cnt = max(self.id, Friction._id_cnt+1) + self._name = name self._edge = None self._begin_kp = 0.0 @@ -42,7 +52,7 @@ class Friction(SQLSubModel): def _db_create(cls, execute): execute(""" CREATE TABLE friction( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + id INTEGER NOT NULL PRIMARY KEY, ind INTEGER NOT NULL, begin_kp REAL NOT NULL, end_kp REAL NOT NULL, @@ -70,28 +80,29 @@ class Friction(SQLSubModel): stricklers = data["stricklers"].stricklers table = execute( - "SELECT ind, begin_kp, end_kp, begin_strickler, end_strickler " + + "SELECT id, ind, begin_kp, end_kp, begin_strickler, end_strickler " + f"FROM friction WHERE reach = {reach.id}" ) for row in table: - ind = row[0] + id = row[0] + ind = row[1] # Get stricklers - if int(row[3]) == -1: + if int(row[4]) == -1: bs = None else: - bs = next(filter(lambda s: s.id == row[3], stricklers)) + bs = next(filter(lambda s: s.id == row[4], stricklers)) - if int(row[4]) == -1: + if int(row[5]) == -1: es = None else: - es = next(filter(lambda s: s.id == row[4], stricklers)) + es = next(filter(lambda s: s.id == row[5], stricklers)) # Create friction sec = cls(status=status) sec.edge = reach - sec.begin_kp = row[1] - sec.end_kp = row[2] + sec.begin_kp = row[2] + sec.end_kp = row[3] sec.begin_strickler = bs sec.end_strickler = es @@ -112,10 +123,11 @@ class Friction(SQLSubModel): execute( "INSERT INTO " + - "friction(ind, begin_kp, end_kp, " + + "friction(id, ind, begin_kp, end_kp, " + "reach, begin_strickler, end_strickler) " + "VALUES (" + - f"{ind}, {self._begin_kp}, {self._end_kp}, " + + f"{self.id}, {ind}, " + + f"{self._begin_kp}, {self._end_kp}, " + f"{self._edge.id}, " + f"{b_s_id}, {e_s_id}" + ")" diff --git a/src/Model/Stricklers/Stricklers.py b/src/Model/Stricklers/Stricklers.py index 10b8aaf3b3629832e9e125a547146cb1b1065f75..285373e204dd893d40e11aba86fc69f05501f3fb 100644 --- a/src/Model/Stricklers/Stricklers.py +++ b/src/Model/Stricklers/Stricklers.py @@ -120,6 +120,8 @@ class Stricklers(SQLSubModel): @property def name(self): + if self._name == "": + return f"K{self.id + 1}" return self._name @name.setter