ExempleCh04_03_DPBuilderRetourTélécharger Exemple du DP Builder ExempleCh04_03.java // Exemple du DP Builder import java.util.*; public class ExempleCh04_03 { public static void main(String[] args) { RequeteSQL req0 = new BuilderRequeteSQL().buildTypeSQL("SELECT").getRequeteSQL(); System.out.println(req0); System.out.println("--------------------------"); RequeteSQL req1 = new BuilderRequeteSQL() .buildTypeSQL("SELECT") .addSelectSQL("nom") .addSelectSQL("prenom") .buildFromSQL("PERSONNE") .getRequeteSQL(); System.out.println(req1); System.out.println("--------------------------"); RequeteSQL req2 = new BuilderRequeteSQL() .buildTypeSQL("SELECT") .addSelectSQL("*") .buildFromSQL("PERSONNE") .buildWhereSQL("nom='LAFONT'") .getRequeteSQL(); System.out.println(req2); System.out.println("--------------------------"); RequeteSQL req3 = new BuilderRequeteSQL_SELECT_PERSONNE() .buildWhereSQL("age > 20") .getRequeteSQL(); System.out.println(req3); System.out.println("--------------------------"); } } //--------------------------------------- class RequeteSQL { private TypeSQL typeSQL; private SelectSQL selectSQL; private UpdateSQL updateSQL; private DeleteSQL deleteSQL; private FromSQL fromSQL; private WhereSQL whereSQL; private OrderSQL orderSQL; public RequeteSQL() { typeSQL = new TypeSQL(); selectSQL = new SelectSQL(); updateSQL = new UpdateSQL(); deleteSQL = new DeleteSQL(); fromSQL = new FromSQL(); whereSQL = new WhereSQL(); orderSQL = new OrderSQL(); } public String toString() { if (typeSQL.getType().equals("SELECT")) return selectSQL+" "+ fromSQL+" "+ whereSQL+" "+ orderSQL+" "; // ... return ""; } public void setTypeSQL(TypeSQL w){typeSQL=w;} public void setSelectSQL(SelectSQL w){selectSQL=w;} public void setUpdateSQL(UpdateSQL w){updateSQL=w;} public void setDeleteSQL(DeleteSQL w){deleteSQL=w;} public void setFromSQL(FromSQL w){fromSQL=w;} public void setWhereSQL(WhereSQL w){whereSQL=w;} public void setOrderSQL(OrderSQL w){orderSQL=w;} public SelectSQL getSelectSQL(){return selectSQL;} public FromSQL getFromSQL(){return fromSQL;} } //--------------------------------------- abstract class AbstractBuilderRequeteSQL { protected RequeteSQL requeteSQL; public AbstractBuilderRequeteSQL() { requeteSQL = new RequeteSQL(); // Par defaut } public RequeteSQL getRequeteSQL(){return requeteSQL;} abstract public AbstractBuilderRequeteSQL buildTypeSQL(String type); abstract public AbstractBuilderRequeteSQL addSelectSQL(String colonne); abstract public AbstractBuilderRequeteSQL buildFromSQL(String... tableau); abstract public AbstractBuilderRequeteSQL buildWhereSQL(String where); abstract public AbstractBuilderRequeteSQL buildOrderSQL(String asc); } //--------------------------------------- class BuilderRequeteSQL extends AbstractBuilderRequeteSQL { public BuilderRequeteSQL() { super(); // Par defaut par le builder requeteSQL.setWhereSQL(new WhereSQL("1 = 1")); } public AbstractBuilderRequeteSQL buildTypeSQL(String type){ requeteSQL.setTypeSQL(new TypeSQL(type)); return this; } public AbstractBuilderRequeteSQL addSelectSQL(String colonne){ requeteSQL.getSelectSQL().addColonne(colonne); return this; } public AbstractBuilderRequeteSQL buildFromSQL(String... tables){ for(String s:tables) requeteSQL.getFromSQL().addTable(s); return this; } public AbstractBuilderRequeteSQL buildWhereSQL(String where){ requeteSQL.setWhereSQL(new WhereSQL(where)); return this; } public AbstractBuilderRequeteSQL buildOrderSQL(String order){ requeteSQL.setOrderSQL(new OrderSQL(order)); return this; } } //--------------------------------------- class BuilderRequeteSQL_SELECT_PERSONNE extends BuilderRequeteSQL { public BuilderRequeteSQL_SELECT_PERSONNE() { super(); buildFromSQL("PERSONNE"); addSelectSQL("nom"); addSelectSQL("prenom"); addSelectSQL("age"); buildTypeSQL("SELECT"); } } //--------------------------------------- class TypeSQL { private String type; public TypeSQL(){type="";} public TypeSQL(String type){this.type=type;} public String toString(){return type;} public String getType(){return type;} } //--------------------------------------- class SelectSQL { private ArrayList<String> colonnes; public SelectSQL(){ colonnes = new ArrayList<String> (); } public void addColonne(String colonne) { colonnes.add(colonne); } public String toString() { String res="SELECT "; for(String s:colonnes)res=res+s+" "; return res; } } //--------------------------------------- class FromSQL { private ArrayList<String> tables; public FromSQL(){ tables = new ArrayList<String> (); } public void addTable(String table) { tables.add(table); } public String toString() { String res="FROM "; for(String s:tables)res=res+s+" "; return res; } } //--------------------------------------- class WhereSQL { private String where; public WhereSQL(){where="";} public WhereSQL(String where){this.where=where;} public String toString(){return "WHERE " + where;} } //--------------------------------------- class OrderSQL { private String order; public OrderSQL(){order="";} public OrderSQL(String order){this.order=order;} public String toString(){return order;} } //--------------------------------------- class DeleteSQL{} // A completer //--------------------------------------- class UpdateSQL{} // A completer compil.bat mkdir bin del /f /s /q bin\*.class javac -d bin *.java pause run.bat cd bin java ExempleCh04_03 pause