package ru.gazprom.gtnn.minos.entity; import java.util.ArrayList; import java.util.List; import com.google.common.base.Preconditions; import ru.gazprom.gtnn.minos.annotations.TableColumn; import ru.gazprom.gtnn.minos.annotations.TableName; import ru.gazprom.gtnn.minos.util.DatabaseConnectionKeeper; import ru.gazprom.gtnn.minos.util.DatabaseConnectionKeeper.RecordFeld; @TableName(name = "CatalogTable") public class CatalogNode extends BasicNode<Integer> { @TableColumn public int catalogID; @TableColumn public String catalogName; @TableColumn public String catalogHost; @TableColumn public int catalogMode; @TableColumn public int catalogParent; @TableColumn public int catalogItem; @TableColumn public int catalogVariety; @TableColumn public java.util.Date catalogCreate; @TableColumn public java.util.Date catalogRemove; public List<Integer> subCatalogs; public static final int CATALOG_NAME = 1; public static final int CATALOG_PARENT = 2; public static final int CATALOG_ITEM = 4; public static final int CATALOG_VARIETY = 8; public static final int CATALOG_CREATE = 16; public static final int CATALOG_REMOVE = 32; public static final int CATALOG_MODE = 64; public static final int CATALOG_HOST = 128; public static final int CATALOG_ID = 256; public void insert(DatabaseConnectionKeeper kdb, int flags) throws Exception{ List<RecordFeld> lst = makeListParam(flags); Preconditions.checkNotNull(lst, "CatalogNode.insert() : insert() return null"); try { catalogID = kdb.insertRow(true, names.get("CatalogTable"), lst); } catch (Exception e) { e.printStackTrace(); throw e; } } public void update(DatabaseConnectionKeeper kdb, int flags) throws Exception { Preconditions.checkArgument(catalogID != -1, "CatalogNode.update() : catalogID field have incorrect value"); List<RecordFeld> lst = makeListParam(flags); Preconditions.checkNotNull(lst, "CatalogNode.insert() : insert() return null"); try { kdb.updateRow( names.get("CatalogTable"), lst, new RecordFeld(java.sql.Types.INTEGER, names.get("catalogID"), catalogID) ); } catch (Exception e) { e.printStackTrace(); throw e; } } @Override public String toString() { return catalogName + " [ " + catalogCreate + " ] " + " [ " + catalogRemove + " ] "; } @Override public boolean equals(Object obj) { if(obj == null) return false; if(obj == this) return true; if( !(obj instanceof CatalogNode) ) return false; return (this.catalogID == ((CatalogNode)obj).catalogID ? true : false); } @Override public int hashCode() { return catalogID; } @Override public Integer getID() { return catalogID; } /** * Make parameters list for insert in table * @param flags - define fields for insert, over filed must be have default value */ private List<RecordFeld> makeListParam(int flags) { if(names == null) return null; if(names.get("CatalogTable") == null) return null; List<RecordFeld> lst = new ArrayList<>(); if(((flags & CATALOG_NAME) != 0) && (names.get("catalogName") != null) ) lst.add(new RecordFeld(java.sql.Types.VARCHAR, names.get("catalogName"), catalogName)); if(((flags & CATALOG_PARENT) != 0) && (names.get("catalogParent") != null) ) lst.add(new RecordFeld(java.sql.Types.INTEGER, names.get("catalogParent"), catalogParent)); if(((flags & CATALOG_ITEM) != 0) && (names.get("catalogItem") != null) ) lst.add(new RecordFeld(java.sql.Types.INTEGER, names.get("catalogItem"), catalogItem)); if(((flags & CATALOG_VARIETY) != 0) && (names.get("catalogVariety") != null) ) lst.add(new RecordFeld(java.sql.Types.INTEGER, names.get("catalogVariety"), catalogVariety)); if(((flags & CATALOG_CREATE) != 0) && (names.get("catalogCreate") != null) ) lst.add(new RecordFeld(java.sql.Types.DATE, names.get("catalogCreate"), catalogCreate)); if(((flags & CATALOG_REMOVE) != 0) && (names.get("catalogRemove") != null) ) lst.add(new RecordFeld(java.sql.Types.DATE, names.get("catalogRemove"), catalogRemove)); if(((flags & CATALOG_MODE) != 0) && (names.get("catalogMode") != null) ) lst.add(new RecordFeld(java.sql.Types.INTEGER, names.get("catalogMode"), catalogMode)); if(((flags & CATALOG_HOST) != 0) && (names.get("catalogHost") != null) ) lst.add(new RecordFeld(java.sql.Types.VARCHAR, names.get("catalogHost"), catalogHost)); if(((flags & CATALOG_ID) != 0) && (names.get("catalogID") != null) ) lst.add(new RecordFeld(java.sql.Types.INTEGER, names.get("catalogID"), catalogID)); return lst; } }