| @@ -18,13 +18,14 @@ def init_empty_db(func): | |||
| """SELECT name FROM sqlite_master WHERE type='table' AND name='LEARNWARE'; """ | |||
| ).fetchall() | |||
| if len(listOfTables) == 0: | |||
| logger.info("Initializing Database in %s..." % (os.path.join(C.database_path, "market.db"))) | |||
| logger.info("Initializing Database in %s..." % (os.path.join(C.database_path, f"market_{market_id}.db"))) | |||
| cur.execute( | |||
| """CREATE TABLE LEARNWARE | |||
| (ID CHAR(10) PRIMARY KEY NOT NULL, | |||
| SEMANTIC_SPEC TEXT NOT NULL, | |||
| ZIP_PATH TEXT NOT NULL, | |||
| FOLDER_PATH TEXT NOT NULL);""" | |||
| FOLDER_PATH TEXT NOT NULL, | |||
| USE_FLAG TEXT NOT NULL);""" | |||
| ) | |||
| logger.info("Database Built!") | |||
| kwargs["cur"] = cur | |||
| @@ -49,12 +50,12 @@ def clear_learnware_table(cur): | |||
| @init_empty_db | |||
| def add_learnware_to_db(id: str, semantic_spec: dict, zip_path: str, folder_path: str, cur): | |||
| def add_learnware_to_db(id: str, semantic_spec: dict, zip_path: str, folder_path: str, use_flag: str, cur): | |||
| semantic_spec_str = json.dumps(semantic_spec) | |||
| cur.execute( | |||
| "INSERT INTO LEARNWARE (ID,SEMANTIC_SPEC,ZIP_PATH,FOLDER_PATH) \ | |||
| VALUES ('%s', '%s', '%s', '%s' )" | |||
| % (id, semantic_spec_str, zip_path, folder_path) | |||
| "INSERT INTO LEARNWARE (ID,SEMANTIC_SPEC,ZIP_PATH,FOLDER_PATH,USE_FLAG) \ | |||
| VALUES ('%s', '%s', '%s', '%s', '%s')" | |||
| % (id, semantic_spec_str, zip_path, folder_path, use_flag) | |||
| ) | |||
| @@ -19,9 +19,9 @@ logger = get_module_logger("market", "INFO") | |||
| class EasyMarket(BaseMarket): | |||
| INVALID_LEARNWARE = -1 | |||
| NOPREDICTION_LEARNWARE = 0 | |||
| PREDICTION_LEARWARE = 1 | |||
| INVALID_LEARNWARE = "INVALID" | |||
| NONUSABLE_LEARNWARE = "NONUSABLE" | |||
| USABLE_LEARWARE = "USABLE" | |||
| def __init__(self, market_id: str = "default", rebuild: bool = False): | |||
| """Initialize Learnware Market. | |||
| @@ -79,8 +79,7 @@ class EasyMarket(BaseMarket): | |||
| learnware.instantiate_model() | |||
| except Exception as e: | |||
| logger.warning(f"The learnware [{learnware.id}] is instantiated failed! Due to {repr(e)}") | |||
| raise | |||
| return cls.INVALID_LEARNWARE | |||
| return cls.NONUSABLE_LEARNWARE | |||
| try: | |||
| spec_data = learnware.specification.stat_spec["RKMEStatSpecification"].get_z() | |||
| @@ -92,9 +91,9 @@ class EasyMarket(BaseMarket): | |||
| pred_spec = learnware.predict(spec_data) | |||
| except Exception: | |||
| logger.warning(f"The learnware [{learnware.id}] prediction is not avaliable") | |||
| return cls.NOPREDICTION_LEARNWARE | |||
| return cls.NONUSABLE_LEARNWARE | |||
| return cls.PREDICTION_LEARWARE | |||
| return cls.USABLE_LEARWARE | |||
| def add_learnware(self, zip_path: str, semantic_spec: dict) -> Tuple[str, bool]: | |||
| """Add a learnware into the market. | |||
| @@ -188,6 +187,7 @@ class EasyMarket(BaseMarket): | |||
| semantic_spec=semantic_spec, | |||
| zip_path=target_zip_dir, | |||
| folder_path=target_folder_dir, | |||
| use_flag=check_flag, | |||
| ) | |||
| return id, True | |||
| else: | |||