LC, BC: Fix save for update db 0.1.0.

scenarios
Pierre-Antoine Rouby 2024-08-06 15:04:42 +02:00
parent d2e5eecf22
commit 19d9a29459
5 changed files with 43 additions and 40 deletions

View File

@ -35,14 +35,15 @@ logger = logging.getLogger()
class Data(SQLSubModel):
_sub_classes = []
def __init__(self, id: int = -1,
def __init__(self, data0, data1,
id: int = -1,
types=[float, float],
status=None):
super(Data, self).__init__(id)
self._status = status
self._types = types
self._data = []
self._data = [data0, data1]
@classmethod
def _db_create(cls, execute, ext=""):
@ -133,11 +134,11 @@ class Data(SQLSubModel):
data1 = bc._types[1](next(it))
nd = cls(
data0, data1,
id=pid,
types=bc._types,
status=data['status']
)
nd._data = [data0, data1]
new.append(nd)
@ -150,12 +151,11 @@ class Data(SQLSubModel):
data1 = self._db_format(str(self[1]))
bc = data["bc"]
sql = (
execute = (
"INSERT INTO " +
"boundary_condition_data(pamhyr_id, ind, data0, data1, bc) " +
f"VALUES ({pid}, {ind}, '{data0}', {data1}, {bc._pamhyr_id})"
)
execute(sql)
def __getitem__(self, key):
return self._types[key](self._data[key])
@ -309,6 +309,7 @@ class BoundaryCondition(SQLSubModel):
ind = 0
for d in self._data:
print(d)
data["ind"] = ind
d._db_save(execute, data)
@ -343,7 +344,7 @@ class BoundaryCondition(SQLSubModel):
@property
def name(self):
if self._name == "":
return f"B{self.id + 1}"
return f"B #{self.pamhyr_id}"
return self._name
@ -408,10 +409,10 @@ class BoundaryCondition(SQLSubModel):
new_0 = self._types[0](data[0].replace(",", "."))
new_1 = self._types[1](data[1].replace(",", "."))
return (new_0, new_1)
return Data(new_0, new_1)
def add(self, index: int):
value = (self._default_0, self._default_1)
value = Data(self._default_0, self._default_1)
self._data.insert(index, value)
self._status.modified()
return value
@ -461,9 +462,9 @@ class BoundaryCondition(SQLSubModel):
return lst
def _set_i_c_v(self, index, column, value):
v = list(self._data[index])
v = self._data[index]
v[column] = self._types[column](value)
self._data[index] = tuple(v)
self._data[index] = v
self._status.modified()
def set_i_0(self, index: int, value):

View File

@ -35,14 +35,16 @@ logger = logging.getLogger()
class Data(SQLSubModel):
_sub_classes = []
def __init__(self, id: int = -1,
def __init__(self,
data0, data1,
id: int = -1,
types=[float, float],
status=None):
super(Data, self).__init__(id)
self._status = status
self._types = types
self._data = []
self._data = [data0, data1]
@classmethod
def _db_create(cls, execute, ext=""):
@ -171,7 +173,7 @@ class LateralContribution(SQLSubModel):
self._name = name
self._type = ""
self._edge = None
self._reach = None
self._begin_rk = None
self._end_rk = None
self._data = []
@ -333,7 +335,7 @@ class LateralContribution(SQLSubModel):
"reach, begin_section, end_section) " +
"VALUES (" +
f"{self.id}, '{self._db_format(self._name)}', " +
f"'{self._db_format(self._type)}', '{tab}', {edge}, " +
f"'{self._db_format(self._type)}', '{tab}', {reach}, " +
f"{self._begin_rk}, {self._end_rk}" +
")"
)
@ -380,7 +382,7 @@ class LateralContribution(SQLSubModel):
@property
def name(self):
if self._name == "":
return f"L{self.id + 1}"
return f"LC #{self.id}"
return self._name
@ -394,19 +396,19 @@ class LateralContribution(SQLSubModel):
return self._type
@property
def edge(self):
return self._edge
def reach(self):
return self._reach
@edge.setter
def edge(self, edge):
self._edge = edge
if edge is not None:
self._begin_rk = self._edge.reach.get_rk_min()
self._end_rk = self._edge.reach.get_rk_max()
@reach.setter
def reach(self, reach):
self._reach = reach
if reach is not None:
self._begin_rk = self._reach.reach.get_rk_min()
self._end_rk = self._reach.reach.get_rk_max()
self._status.modified()
def has_edge(self):
return self._edge is not None
def has_reach(self):
return self._reach is not None
@property
def begin_rk(self):
@ -414,11 +416,11 @@ class LateralContribution(SQLSubModel):
@begin_rk.setter
def begin_rk(self, begin_rk):
if self._edge is None:
if self._reach is None:
self._begin_rk = begin_rk
else:
_min = self._edge.reach.get_rk_min()
_max = self._edge.reach.get_rk_max()
_min = self._reach.reach.get_rk_min()
_max = self._reach.reach.get_rk_max()
if _min <= begin_rk <= _max:
self._begin_rk = begin_rk
@ -431,11 +433,11 @@ class LateralContribution(SQLSubModel):
@end_rk.setter
def end_rk(self, end_rk):
if self._edge is None:
if self._reach is None:
self._end_rk = end_rk
else:
_min = self._edge.reach.get_rk_min()
_max = self._edge.reach.get_rk_max()
_min = self._reach.reach.get_rk_min()
_max = self._reach.reach.get_rk_max()
if _min <= end_rk <= _max:
self._end_rk = end_rk
@ -482,10 +484,10 @@ class LateralContribution(SQLSubModel):
new_0 = self._types[0](data[0].replace(",", "."))
new_1 = self._types[1](data[1].replace(",", "."))
return (new_0, new_1)
return Data(new_0, new_1)
def add(self, index: int):
value = (self._default_0, self._default_1)
value = Data(self._default_0, self._default_1)
self._data.insert(index, value)
self._status.modified()
return value
@ -532,9 +534,9 @@ class LateralContribution(SQLSubModel):
return lst
def _set_i_c_v(self, index, column, value):
v = list(self._data[index])
v = self._data[index]
v[column] = self._types[column](value)
self._data[index] = tuple(v)
self._data[index] = v
self._status.modified()
def set_i_0(self, index: int, value):
@ -546,7 +548,7 @@ class LateralContribution(SQLSubModel):
@timer
def convert(self, cls):
new = cls(name=self.name, status=self._status)
new.edge = self.edge
new.reach = self.reach
new.begin_rk = self.begin_rk
new.end_rk = self.end_rk

View File

@ -49,7 +49,7 @@ class Layer(SQLSubModel):
@property
def name(self):
if self._name == "":
return f"Layer{self.id + 1}"
return f"Layer #{self.pamhyr_id}"
return self._name

View File

@ -142,7 +142,7 @@ class Stricklers(SQLSubModel):
@property
def name(self):
if self._name == "":
return f"K{self.id + 1}"
return f"K #{self.pamhyr_id}"
return self._name
@name.setter

View File

@ -148,7 +148,7 @@ class Mage(CommandLineSolver):
# Write header
edges = study.river.enable_edges()
for edge in edges:
name = f"Reach_{edge.id + 1:>3}".replace(" ", "0")
name = f"Reach_{edge.pamhyr_id:>3}".replace(" ", "0")
with mage_file_open(
os.path.join(repertory, "net", f"{name}.ST"),
@ -826,7 +826,7 @@ class Mage8(Mage):
edges = study.river.enable_edges()
for e in edges:
name = f"Reach_{e.id + 1:>3}".replace(" ", "0")
name = f"Reach_{e.pamhyr_id:>3}".replace(" ", "0")
id = name
n1 = f"{e.node1.id:3}".replace(" ", "x")