001package gu.sql2java.generator; 002 003import java.util.ArrayList; 004import java.util.HashMap; 005import java.util.List; 006 007import gu.sql2java.generator.Column; 008import gu.sql2java.generator.StringUtilities; 009 010public class Procedure { 011 private static final String IN_COLUMN = "IN"; 012 private static final String IN_OUT_COLUMN = "INOUT"; 013 private static final String OUT_COLUMN = "OUT"; 014 private String name; 015 private String sqlName; 016 private String remarks; 017 private String returnType; 018 private List<Column> columns = new ArrayList<Column>(); 019 private List<Column> inColumns = new ArrayList<Column>(); 020 private List<Column> outColumns = new ArrayList<Column>(); 021 private HashMap<String,Column> colsHash = new HashMap<>(); 022 private int position = 1; 023 024 private int nextPosition() { 025 return this.position++; 026 } 027 028 private boolean addColumn(Column column) { 029 if (null == this.colsHash.get(column.getName())) { 030 column.setOrdinalPosition(this.nextPosition()); 031 this.columns.add(column); 032 this.colsHash.put(column.getName(), column); 033 return true; 034 } 035 return false; 036 } 037 038 public void addInColumn(Column column) { 039 column.setDefaultValue(IN_COLUMN); 040 if (this.addColumn(column)) { 041 this.inColumns.add(column); 042 } 043 } 044 045 public void addInOutColumn(Column column) { 046 column.setDefaultValue(IN_OUT_COLUMN); 047 if (this.addColumn(column)) { 048 this.inColumns.add(column); 049 this.outColumns.add(column); 050 } 051 } 052 053 public void addOutColumn(Column column) { 054 column.setDefaultValue(OUT_COLUMN); 055 if (this.addColumn(column)) { 056 this.outColumns.add(column); 057 } 058 } 059 060 public int getColumnsCount() { 061 return this.columns.size(); 062 } 063 064 public int getOutColumnsCount() { 065 return this.outColumns.size(); 066 } 067 068 public Column[] getColumns() { 069 return this.columns.toArray(new Column[this.columns.size()]); 070 } 071 072 public Column[] getInColumns() { 073 return this.inColumns.toArray(new Column[this.inColumns.size()]); 074 } 075 076 public Column[] getOutColumns() { 077 return this.outColumns.toArray(new Column[this.outColumns.size()]); 078 } 079 080 public String getName() { 081 return this.name; 082 } 083 084 public void setName(String name) { 085 this.sqlName = name; 086 this.name = StringUtilities.convertName((String) name, (boolean) true); 087 } 088 089 public String getSqlName() { 090 return this.sqlName; 091 } 092 093 public String getRemarks() { 094 return this.remarks; 095 } 096 097 public void setRemarks(String remarks) { 098 this.remarks = remarks; 099 } 100 101 public String getReturnType() { 102 return this.returnType; 103 } 104 105 public void setReturnType(String returnType) { 106 this.returnType = returnType; 107 } 108}