📄 tablestructure.java
字号:
}else {
String s="";String posi="";String []p;
for(int i=0;i<linePoint.size();i++)
posi+=i+" ";
for (int i = 0; i < s2.length; i++)
s+=tc[s2[i]].getColumn() + "\t";
s+="\n";
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++)
{
TableColumnsList temp = (TableColumnsList) linePoint.get(Integer.parseInt(p[i]));
String[] column = temp.getColumn();
for (int j = 0; j < s2.length; j++)
{
s+=column[s2[j]] + "\t";
}
s+="\n";
}
return s;
}
}
private String[] orderby(String[] p1, String by, boolean order) {
int[]pos=new int[p1.length];
int tmp=0;
for(int i=0;i<p1.length;i++)
pos[i]=Integer.parseInt(p1[i]);
try{
tmp=Integer.parseInt(by)-1;
}catch(Exception e){
tmp=getColumnNumber(by);
System.out.println(tmp);
}
double tmp1,tmp2;
for(int i=0;i<pos.length-1;i++)
{
for(int j=i+1;j<pos.length;j++)
{
TableColumnsList temp = (TableColumnsList) linePoint.get(pos[i]);
String[] column = temp.getColumn();
try{
tmp1=Double.parseDouble(column[tmp]);
}catch(Exception e){
return null;
}
TableColumnsList temp1 = (TableColumnsList) linePoint.get(pos[j]);
String[] column1 = temp1.getColumn();
tmp2=Double.parseDouble(column1[tmp]);
if(order)
{
if(tmp1>tmp2)
{
pos[i]=pos[i]+pos[j];
pos[j]=pos[i]-pos[j];
pos[i]=pos[i]-pos[j];
}
}
else {
if(tmp1<tmp2)
{
pos[i]=pos[i]+pos[j];
pos[j]=pos[i]-pos[j];
pos[i]=pos[i]-pos[j];
}
}
}
}
for(int i=0;i<p1.length;i++)
p1[i]=pos[i]+"";
return p1;
}
private String max(String posi, int k) {
int max=0;
TableColumnsList temp;
String[] column;
String[] p=posi.split(" ");
temp = (TableColumnsList)linePoint.get(Integer.parseInt(p[p.length-1]));
column = temp.getColumn();
max=Integer.parseInt(column[k]);
if(p.length>1){
for(int i=p.length-2;i>=0;i--)
{
temp = (TableColumnsList)linePoint.get(Integer.parseInt(p[i]));
column = temp.getColumn();
if(Integer.parseInt(column[k])>max)max=Integer.parseInt(column[k]);
}
}
return max+"";
}
private String min(String posi, int k) {
int min=0;
TableColumnsList temp;
String[] column;
String[] p=posi.split(" ");
temp = (TableColumnsList)linePoint.get(Integer.parseInt(p[p.length-1]));
column = temp.getColumn();
min=Integer.parseInt(column[k]);
if(p.length>1){
for(int i=p.length-2;i>=0;i--)
{
temp = (TableColumnsList)linePoint.get(Integer.parseInt(p[i]));
column = temp.getColumn();
if(Integer.parseInt(column[k])<min)min=Integer.parseInt(column[k]);
}
}
return min+"";
}
private String avg(String posi, int k) {
double avg=0;
TableColumnsList temp;
String[] column;
String[] p=posi.split(" ");
for(int i=p.length-1;i>=0;i--)
{
temp = (TableColumnsList)linePoint.get(Integer.parseInt(p[i]));
column = temp.getColumn();
avg+=Integer.parseInt(column[k]);
}
DecimalFormat a=new DecimalFormat();
a.setMaximumFractionDigits(2);
return a.format(avg/p.length)+"";
}
private String sum(String posi, int k) {
double sum=0;
TableColumnsList temp;
String[] column;
String[] p=posi.split(" ");
for(int i=p.length-1;i>=0;i--)
{
temp = (TableColumnsList)linePoint.get(Integer.parseInt(p[i]));
column = temp.getColumn();
sum+=Integer.parseInt(column[k]);
}
return sum+"";
}
private String count(String posi, int i) {
String[] p=posi.split(" ");
return p.length+"";
}
public String deleteRecord(Where where) {
if (where.getOperator1().size() == 0) { // 删除所有记录
Iterator it = linePoint.iterator();
while (it.hasNext()) {
TableColumnsList temp = (TableColumnsList) it.next();
temp = null;
}
linePoint = new ArrayList();
System.gc();
} 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;
}
removeRecord(posi);
}
return "suc";
}
public boolean checkColumn(String[] str) {
int keyCount = -1;
if (columnCount != str.length)// column数量是否相等
return false;
if (primary_key != null) {
for (int i = 0; i < tc.length; i++)
// 主键是否唯一
if (tc != null && primary_key.equals(tc[i].getColumn())) {
keyCount = i;
break;
}
Iterator it = linePoint.iterator();
while (it.hasNext()) {
tcl = (TableColumnsList) it.next();
if (str[keyCount].equals(tcl.getColumn()[keyCount]))
return false;
}
}
// 判断是否为空
for (int i = 0; i < str.length; i++) {
if (str[i].equals("null") && tc[i].getIsEmpty() == 1)
return false;
}
// *********************************还差类型匹配验证
// for(int i=0;i<str.length;i++){
// if(tc[i].getType().equals("int"))
// str[i] = new int();;
// }
return true;
}
public int getColumnNumber(String column) {// 确定属性在tc中的位置,-1表示没有属性存在
int temp = -1;
for (int i = 0; i < tc.length; i++)
if (tc != null && column.equals(tc[i].getColumn())) {
temp = i;
break;
}
return temp;
}
public boolean removeRecord(String pos){
if(pos.length()>0)
{
String[] p=pos.split(" ");
for(int i=0;i<p.length;i++)
linePoint.remove(Integer.parseInt(p[i]));
}
return true;
// tableLine++;
}
public String showTable() {
String s="";
s="表" + tableName + "信息: 主键" + primary_key + " 外键"
+ foreign_key+"\n";
for (int i = 0; i < tc.length; i++)
s+=tc[i].getColumn() + "\t";
s+="\n";
Iterator it = linePoint.iterator();
while (it.hasNext()) {
TableColumnsList temp = (TableColumnsList) it.next();
String[] column = temp.getColumn();
for (int i = 0; i < column.length; i++)
s+=column[i] + "\t";
s+="\n";
}
return s;
}
public String getForeign_key() {
return foreign_key;
}
public void setForeign_key(String foreign_key) {
this.foreign_key = foreign_key;
}
public String getPrimary_key() {
return primary_key;
}
public TableColumns[] getTc() {
return tc;
}
public TableColumnsList getTcl() {
return tcl;
}
public void setPrimary_key(String primary_key) {
this.primary_key = primary_key;
}
public String getTableName(){
return tableName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -