Finding Columns

Finding Columns
 1ot = impact.gui.output_toolbox
 2db = impact.active_database
 3
 4doc_settings = db.settings.document_settings
 5
 6ot.add("=== Find all document columns ===")
 7
 8def_doc_type = doc_settings.types.default_document_type
 9all_columns = def_doc_type.columns
10
11
12def describe_column(name, column):
13    if column is None:
14        ot.add("Unable to locate column '" + str(name) + "'")
15
16    else:
17        ot.add("Found Column: " + str(name))
18        ot.add("  Name: " + str(column.name))
19        ot.add("  Type: " + str(column.type))
20
21        if column.known_column != ipDocumentKnownColumn.dkcCustom:
22            ot.add("  KnownColumn: " + str(column.known_column))
23
24
25ot.clear()
26
27ot.add("=== Find all document columns ===")
28
29ot.add("Default Document Type: " + def_doc_type.name + " (" + def_doc_type.key + ")")
30ot.add("All Document Columns: " + str(all_columns.count))
31
32# find known document columns
33describe_column("ipDocumentKnownColumn.dkcName", all_columns.known_item(ipDocumentKnownColumn.dkcName))
34describe_column("ipDocumentKnownColumn.dkcSize", all_columns.known_item(ipDocumentKnownColumn.dkcSize))
35describe_column("ipDocumentKnownColumn.dkcGroup", all_columns.known_item(ipDocumentKnownColumn.dkcGroup))
36
37# find custom columns (ensures KnownColumn == ipDocumentKnownColumn.dkcCustom)
38describe_column("DC_WIDTH", all_columns.custom_item("DC_WIDTH"))
39describe_column("DC_HEIGHT", all_columns.custom_item("DC_HEIGHT"))
40
41# find any column by name (not recommended for KnownColumn != ipDocumentKnownColumn.dkcCustom)
42describe_column("DC_NAME", all_columns.item("DC_NAME"))
43
44ot.add("=== Find columns for a specific IDocumentType ===")
45
46cad_doc_type = doc_settings.types.item("impact:cad")
47cad_columns = cad_doc_type.columns
48
49ot.add("CAD Document Type: " + cad_doc_type.name + " (" + cad_doc_type.key + ")")
50ot.add("CAD Document Columns: " + str(cad_columns.count))
51
52# find known columns for CAD document type
53describe_column("ipDocumentKnownColumn.dkcName", cad_columns.known_item(ipDocumentKnownColumn.dkcName))
54describe_column("ipDocumentKnownColumn.dkcSize", cad_columns.known_item(ipDocumentKnownColumn.dkcSize))
55
56# find custom columns for CAD document type (should fail in typical configuration)
57describe_column("DC_WIDTH", cad_columns.custom_item("DC_WIDTH"))