⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringmanager.java

📁 一个简单的数据库
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package stringManager;import database.*;import fileManager.*;import java.util.ArrayList;import javax.swing.JOptionPane;import catalogManager.*;import indexManager.*;import apiManager.*;/** * * @author outlaw */public class StringManager {    public StringManager(){    }    public static boolean verifyTableName(String tbName)    {        if(CatalogManager.getTableByName(tbName)==null)            return false;        return true;    }    public static boolean verifySemicolon(String instr) throws Exception{        instr=instr.trim();        int count=0,len=instr.length();        for(int i=0;i<len;i++){            if(instr.charAt(i)==';')                count+=i;        }        return count==len-1;    }    public static boolean verifyBracket(String instr){        int balance=0;        for(int i=0;i<instr.length();i++){            if(balance<0)                return false;            if(instr.charAt(i)=='(')                balance++;            if(instr.charAt(i)==')')                balance--;        }        return balance==0;    }    public static boolean verifyCreateTBBracket(String instr)    {        int left=0,right=0;        for(int i=0;i<instr.length();i++)        {            if(instr.charAt(i)=='(')                left++;            if(instr.charAt(i)==')')                right++;        }        if(left==2&&right==2)            return true;        return false;    }    public static boolean verifyName(String name){        if(name.length()==0)            return false;        char[] nameChar=name.toCharArray();        char[] validNameChar={'~','!','@','#','$','%','^','&','*','(',')','+','=','\\','|',';',':','?','>','<',' ','\n','.'};        for(int i=0;i<nameChar.length;i++){            for(int j=0;j<validNameChar.length;j++){                if(nameChar[i]==validNameChar[j])                    return false;            }        }        return true;    }    public static boolean verifyAttribName(TableData tb,String name)    {        ArrayList<Attribute> attribs=tb.getAttributes();                for(int i=0;i<attribs.size();i++)        {            if(attribs.get(i).getName().equals(name))                return true;        }        return false;    }    public static boolean verifyKey(String instr,StringBuilder keyName) throws Exception    {        if(instr.indexOf("primary")!=-1)        {            if(instr.substring(0,instr.indexOf("primary")).trim().length()!=0)                throw new OperationInfo("Creating table syntax error!The primary key syntax error!\n" +                        "There can't be anything but white space before 'primary'!");            instr=instr.substring(instr.indexOf("primary")+7).trim();            if(instr.indexOf("key")!=-1)            {                if(instr.substring(0,instr.indexOf("key")).trim().length()!=0)                    throw new OperationInfo("Creating table syntax error!The primary key syntax error!\n" +                            "There can't be anything but white space between 'primary' and 'key'!");                instr=instr.substring(instr.indexOf("key")+3).trim();                if(instr.substring(0,instr.indexOf("(")).trim().length()!=0)                    throw new OperationInfo("Creating table syntax error!The primary key syntax error!\n" +                            "There can't be anything but white space between 'key' and '('!");                if(instr.substring(instr.indexOf(")")+1).trim().length()!=0)                    throw new OperationInfo("Creating table syntax error!The primary key syntax error!\n" +                            "There can't be anything but white space after ')'!");                keyName.append(instr.substring(instr.indexOf("(")+1,instr.indexOf(")")).trim());                if(!verifyName(keyName.toString()))                    throw new OperationInfo("Creating table syntax error!The primary key syntax error!\n" +                            "The keyName:["+keyName.toString()+"]is not valid!");                return true;            }            throw new OperationInfo("Creating table syntax error!The primary key syntax error!There is no 'key'");        }        return false;    }    public static boolean verifyGetAttribType(String type,String[] assist) throws Exception{        if(!verifyBracket(type))            return false;        if(type.indexOf("int")!=-1)        {            assist[0]="int";            type=type.substring(type.indexOf("int")+3).trim();            if(type.equals("unique"))                    assist[1]="unique";            else if(type.length()!=0)                return false;            else                assist[1]="";               return true;        }        else if(type.indexOf("float")!=-1)        {            assist[0]="float";            type=type.substring(type.indexOf("float")+5).trim();            if(type.equals("unique"))                    assist[1]="unique";            else if(type.length()!=0)                return false;            else                assist[1]="";            return true;        }        else if(type.indexOf("char")!=1)        {            type=type.substring(type.indexOf("char")+4).trim();            int charLen;            try            {                charLen=Integer.parseInt(type.substring(type.indexOf("(")+1,type.indexOf(")")));            }catch(Exception ex)            {                throw new OperationInfo("Char attribute define error!:["+type+"]");            }         //这个地方应该让用户知道是因为长度不对才产生错误的。            if(charLen>255||charLen<1)                return false;            assist[0]="char"+charLen;            type=type.substring(type.indexOf(")")+1).trim();            if(type.equals("unique"))                assist[1]="unique";            else if(type.length()!=0)                return false;            else                assist[1]="";            return true;        }        return false;    }    public static String[] operCreateDB(String createDBInstr) throws Exception{        //createDBInstr是从表名的第一个字母开始        String[] pathAndName =new String[2];        String temp;        //第一个时path,第二个是name        if(!verifyBracket(createDBInstr))            throw new OperationInfo("Creating DataBase syntax error!:["+createDBInstr+"]\nBracket " +                    "not balaced!\n");        pathAndName[1]=createDBInstr.substring(0,createDBInstr.indexOf('(')).trim();        if(!verifyName(pathAndName[1]))            throw new OperationInfo("Creating DataBase syntax error!:["+pathAndName[1]+"]\nDB name Not valid " +                    "DataBase Name!\n");        pathAndName[0]=FileManager.WORKPATH+pathAndName[1]+"/";        return pathAndName;    }    public static void operCreateTB(String createTBInstr,StringBuilder realTBName,ArrayList attribNames,ArrayList attribTypes,ArrayList features) throws Exception{        //createTBInstr是从table的name开始的,其前面没有没有空格        if(!verifyBracket(createTBInstr))            throw new OperationInfo("Creating table syntax error!:["+createTBInstr+"]\nBracket not balanced!\n");        String tbName;        tbName=createTBInstr.substring(0,createTBInstr.indexOf("(")).trim();        if(!verifyName(tbName))            throw new OperationInfo("Creating table syntax error!:["+tbName+"]\nTable name not valid!\n");        realTBName.append(tbName);        createTBInstr=createTBInstr.substring(createTBInstr.indexOf("(")+1,createTBInstr.lastIndexOf(")"));        String[] temp=createTBInstr.split(",");        String name,type;        StringBuilder keyName=new StringBuilder();        String[] assist=new String[2];        for(int i=0;i<temp.length;i++)        {            temp[i]=temp[i].trim();            if(verifyKey(temp[i],keyName))            {                int len=attribNames.size();                for(int j=0;j<len;j++)                {                    if(((String)attribNames.get(j)).equals(keyName.toString()))                    {                        if(((Integer)features.get(j)).intValue()!=2)                            features.set(j, 2);                        else                            throw new OperationInfo("Creating table syntax error!:["+temp[i]+"]\nRedefine the key!\n");                    }                    else                     {                        if(((Integer)features.get(j)).intValue()==2)                            throw new OperationInfo("Creating table syntax error!["+temp[i]+"]\nDefine more than one key!\n");                    }                }            }            else            {                //JOptionPane.showMessageDialog(null, name+"\n"+type);                if(temp[i].indexOf("int")!=-1)                {                    name=temp[i].substring(0,temp[i].indexOf("int")).trim();                    type=temp[i].substring(temp[i].indexOf("int")).trim();                }                else if(temp[i].indexOf("float")!=-1)                {                    name=temp[i].substring(0,temp[i].indexOf("float")).trim();                    type=temp[i].substring(temp[i].indexOf("float")).trim();                }                else if(temp[i].indexOf("char")!=-1)                {                    name=temp[i].substring(0,temp[i].indexOf("char")).trim();                    type=temp[i].substring(temp[i].indexOf("char")).trim();                }                else                    throw new OperationInfo("Creating table error!:"+                            "["+temp[i]+"]is not valid!");                if(!verifyName(name))                    throw new OperationInfo("Attribute name(or type) error!:["+temp[i]+"]"+"\n");                if(!verifyGetAttribType(type,assist))                    throw new OperationInfo("Attribute define error!\n["+temp[i]+"]");                else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -