📄 tablestructure.java
字号:
import java.text.DecimalFormat;
import java.util.*;
public class TableStructure {
private String tableName;
private String primary_key= null;
private String foreign_key;
private ArrayList linePoint = new ArrayList();
private TableColumns[] tc;
private TableColumnsList tcl;
private int columnCount;
//private int tableLine;
public TableStructure() {
}
public boolean createTable(String tableName, TableColumns[] tc,
String primary_key, String foreign_key) {
boolean result = false;
this.tableName = tableName;
this.tc = tc;
this.primary_key = primary_key;
this.foreign_key = foreign_key;
columnCount = tc.length;
// tableLine=0;
result = true;
return result;
}
public ArrayList getLinePoint() {
return linePoint;
}
public void setLinePoint(ArrayList linePoint) {
this.linePoint = linePoint;
}
public boolean insertRecord(String[] str){
if (checkColumn(str) == false)
return false;
tcl = new TableColumnsList();
tcl.insertRecord(tc.length, str);
linePoint.add(tcl);
return true;
// tableLine++;
}
public String updateRecord(UpSet set, Where where) {
int set_temp;
for (int i = 0; i < set.getColumn().size(); i++) {// 判断set中的属性是否存在
set_temp = getColumnNumber((String)set.getColumn().get(i));
if (set_temp == -1)
return "Can't find column!\n";
}
if (where == null) {// 更新所有列记录
Iterator it = linePoint.iterator();
while (it.hasNext()) {
TableColumnsList tcl_temp = (TableColumnsList) it.next();
for (int i = 0; i < set.getColumn().size(); i++) {
set_temp = getColumnNumber((String)set.getColumn().get(i));
tcl_temp.getColumn()[set_temp]=(String)set.getOperator().get(i);
}
}
} else {
boolean flag;
String posi="";
int position=-1;
int []s=new int[where.getOperator1().size()];
for(int j=0;j<s.length;j++)
s[j]=-1;
for(int k=0;k<s.length;k++)
{
for(int j=0;j<tc.length;j++)
if(tc[j].getColumn().equals((String)where.getOperator1().get(k)))
{
s[k]=j;
}
}
if(s[s.length-1]==-1) {
return "Can't find column!\n";
}
Iterator it = linePoint.iterator();
while(it.hasNext()){
flag=true;
position++;
TableColumnsList temp = (TableColumnsList)it.next();
String []column =temp.getColumn();
for(int j=0;j<s.length;j++)
{
if(((String)where.getConj().get(j)).equals("or"))
if(flag)break;
else flag=true;
else if(!flag) continue;
if(((String)where.getOper().get(j)).equals("="))
if(!(column[s[j]].equals((String)where.getOperator2().get(j))))
{
flag=false;
continue;
}
if(!((String)where.getOper().get(j)).equals("="))
try{
int v=Integer.parseInt((String)where.getOperator2().get(j));
if(((String)where.getOper().get(j)).equals("<="))
if(!(Integer.parseInt(column[s[j]])<=v))
{
flag=false;
continue;
}
if(((String)where.getOper().get(j)).equals(">="))
if(!(Integer.parseInt(column[s[j]])>=v))
{
flag=false;
continue;
}
if(((String)where.getOper().get(j)).equals("<"))
if(!(Integer.parseInt(column[s[j]])<v))
{
flag=false;
continue;
}
if(((String)where.getOper().get(j)).equals(">"))
if(!(Integer.parseInt(column[s[j]])>v))
{
flag=false;
continue;
}
}catch(Exception e){return "Value is not illegal";}
}
if(flag)posi=position+" "+posi;
}
if(posi.length()>0)
{
int pos;
String[] p=posi.split(" ");
for(int j=0;j<p.length;j++)
{
pos=(Integer.parseInt(p[j]));
TableColumnsList tcl_temp =(TableColumnsList)linePoint.get(pos);
for (int i = 0; i < set.getColumn().size(); i++) {
if(primary_key.equals((String)set.getColumn().get(i)))
{
int keyCount=getColumnNumber((String)set.getColumn().get(i));
Iterator its = linePoint.iterator();
while (its.hasNext()) {
tcl = (TableColumnsList) its.next();
if (((String)set.getOperator().get(i)).equals(tcl.getColumn()[keyCount]))
return "The value of PK has exist!";
}
}
set_temp = getColumnNumber((String)set.getColumn().get(i));
tcl_temp.getColumn()[set_temp]=(String)set.getOperator().get(i);
}
}
}
}
return "suc";
}
public String selectRecord(Vector column1,Where where,Vector function,Vector othername, String by, boolean order) {
int []s2;
if((String)column1.get(0)=="" && column1.size()==1 )
if(function.size()==0){
s2=new int[tc.length];
for(int i=0;i<s2.length;i++)
s2[i]=i;
}
else s2=new int[function.size()];
else{
boolean f;
s2=new int[column1.size()];
for(int j=0;j<s2.length;j++)
s2[j]=-1;
for(int k=0;k<s2.length;k++)
{
f=true;
for(int j=0;j<tc.length;j++)
{
if(tc[j].getColumn().equals((String)column1.get(k)))
{
s2[k]=j;f=false;break;
}
if((String)column1.get(k)=="")
{
f=false;break;
}
}
if(f) {
return "Can't find column!\n";
}
}
}
if(where.getOperator1().size()!=0)
{
String posi="";
boolean flag;
int position=-1;
int []s=new int[where.getOperator1().size()];
for(int j=0;j<s.length;j++)
s[j]=-1;
for(int k=0;k<s.length;k++)
{
for(int j=0;j<tc.length;j++)
if(tc[j].getColumn().equals((String)where.getOperator1().get(k)))
{
s[k]=j;
}
}
if(s[s.length-1]==-1) {
return "Can't find column!\n";
}
Iterator it = linePoint.iterator();
while(it.hasNext()){
flag=true;
position++;
TableColumnsList temp = (TableColumnsList)it.next();
String []column =temp.getColumn();
for(int j=0;j<s.length;j++)
{
if(((String)where.getConj().get(j)).equals("or"))
if(flag)break;
else flag=true;
else if(!flag) continue;
if(((String)where.getOper().get(j)).equals("="))
if(!(column[s[j]].equals((String)where.getOperator2().get(j))))
{
flag=false;
continue;
}
if(!((String)where.getOper().get(j)).equals("="))
try{
int v=Integer.parseInt((String)where.getOperator2().get(j));
if(((String)where.getOper().get(j)).equals("<="))
if(!(Integer.parseInt(column[s[j]])<=v))
{
flag=false;
continue;
}
if(((String)where.getOper().get(j)).equals(">="))
if(!(Integer.parseInt(column[s[j]])>=v))
{
flag=false;
continue;
}
if(((String)where.getOper().get(j)).equals("<"))
if(!(Integer.parseInt(column[s[j]])<v))
{
flag=false;
continue;
}
if(((String)where.getOper().get(j)).equals(">"))
if(!(Integer.parseInt(column[s[j]])>v))
{
flag=false;
continue;
}
}catch(Exception e){return "Value is not illegal\n";}
}
if(flag)posi=posi+position+" ";
}
if(function.size()!=0){
String s1="";
for (int i = 0; i < s2.length; i++)
s1+=(String)othername.get(i) + "\t";
s1+="\n";
for(int i=0;i<function.size();i++)
switch(((String)function.get(i)).charAt(1)){
case 'a':s1+=max(posi,s2[i])+"\t";break;
case 'i':s1+=min(posi,s2[i])+"\t";break;
case 'v':s1+=avg(posi,s2[i])+"\t";break;
case 'u':s1+=sum(posi,s2[i])+"\t";break;
case 'o':s1+=count(posi,s2[i])+"\t";break;
}
return s1+"\n";
}
else{
String s1="";
for (int i = 0; i < s2.length; i++)
s1+=tc[s2[i]].getColumn() + "\t";
s1+="\n";
TableColumnsList temp;
String[] column,p;
if(by=="")
p=posi.split(" ");
else{
String[] p1=posi.split(" ");
p=orderby(p1,by,order);
}
if(p==null) return "the order by column isn't comparable";
for(int i=0;i<p.length;i++)
{
temp = (TableColumnsList)linePoint.get(Integer.parseInt(p[i]));
column = temp.getColumn();
for (int j = 0; j < s2.length; j++)
{
s1+=column[s2[j]] + "\t";
}
s1+="\n";
}
return s1;
}
}else if(function.size()!=0){
String s1="";
String posi="";
for(int i=0;i<linePoint.size();i++)
posi+=i+" ";
for (int i = 0; i < s2.length; i++)
s1+=(String)othername.get(i) + "\t";
s1+="\n";
for(int i=0;i<function.size();i++)
switch(((String)function.get(i)).charAt(1)){
case 'a':s1+=max(posi,s2[i])+"\t";break;
case 'i':s1+=min(posi,s2[i])+"\t";break;
case 'v':s1+=avg(posi,s2[i])+"\t";break;
case 'u':s1+=sum(posi,s2[i])+"\t";break;
case 'o':s1+=count(posi,s2[i])+"\t";break;
}
return s1+"\n";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -