home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 July / Chip_1998-07_cd.bin / zkuste / JBuilder / BDK / Win / bdk_sep97.exe / _SETUP.1 / Populate.java < prev    next >
Encoding:
Java Source  |  1997-09-10  |  11.5 KB  |  414 lines

  1.  
  2. package sunw.demo.select;
  3.  
  4. import java.sql.*;
  5.  
  6. class Populate {
  7.  
  8.     public static void main(String argv[]) {
  9.  
  10.         connect();
  11.  
  12.     createTables();
  13.  
  14.     addSparcs();
  15.  
  16.         try {
  17.             Statement s = getStatement();
  18.             ResultSet rs = s.executeQuery("SELECT COUNT(*) FROM PIPELINES");
  19.         rs.next();
  20.         System.err.println("PIPELINE COUNT = " + rs.getInt(1));
  21.             rs = s.executeQuery("SELECT COUNT(*) FROM CHIPS");
  22.         rs.next();
  23.         System.err.println("CHIP COUNT = " + rs.getInt(1));
  24.             rs = s.executeQuery("SELECT COUNT(*) FROM BOXES");
  25.         rs.next();
  26.         System.err.println("BOX COUNT = " + rs.getInt(1));
  27.     } catch (SQLException sx) {
  28.         report(sx);
  29.         throw new Error("" + sx);
  30.     }
  31.     }
  32.  
  33.     static void createTables() {
  34.     try {
  35.         Statement s = getStatement();
  36.  
  37.         try {
  38.         s.execute("DROP TABLE BOXES");
  39.         } catch (Exception ex) {    
  40.         }
  41.         try {
  42.         s.execute("DROP TABLE CHIPS");
  43.         } catch (Exception ex) {
  44.         }
  45.         try {
  46.         s.execute("DROP TABLE PIPELINES");
  47.         } catch (Exception ex) {
  48.         }
  49.  
  50.         s.execute("CREATE TABLE PIPELINES ( " +
  51.             "YEAR CHAR(4), " +
  52.             "NAME VARCHAR(30), " +
  53.             "STAGES INTEGER," +
  54.             "PRIMARY KEY (NAME)" +
  55.             ")");
  56.  
  57.         s.execute("CREATE TABLE CHIPS ( " +
  58.             "YEAR CHAR(4), " +
  59.             "NAME VARCHAR(30), " +
  60.             "NICKNAME VARCHAR(30), " +
  61.             "PIPELINE VARCHAR(30), " + 
  62.                 "LOW_MHZ VARCHAR(4)," +
  63.                 "HIGH_MHZ VARCHAR(4)," +
  64.             "VARIANT VARCHAR(5)," +
  65.             "PRIMARY KEY (NAME), " + 
  66.             "FOREIGN KEY (PIPELINE) REFERENCES PIPELINES" + 
  67.             ")");
  68.  
  69.         s.execute("CREATE TABLE BOXES ( " +
  70.             "QUARTER CHAR(4), " +
  71.             "VENDOR VARCHAR(50), " +
  72.             "MODEL VARCHAR(100), " +
  73.             "ARCHITECTURE VARCHAR(30), " +
  74.             "CHIP VARCHAR(30), " +
  75.             "MHZ VARCHAR(4), " +
  76.             "SPEC89 VARCHAR(8), " +
  77.             "SPECINT92 VARCHAR(8), " +
  78.             "SPECFP92 VARCHAR(8), " +
  79.             "SPECINT95 VARCHAR(8), " +
  80.             "SPECFP95 VARCHAR(8), " +
  81.             "PRICE VARCHAR(10), " +
  82.             "CONFIGURATION VARCHAR(100), " +
  83.             "PRIMARY KEY (MODEL), " + 
  84.             "FOREIGN KEY (CHIP) REFERENCES CHIPS" + 
  85.             ")");
  86.  
  87.     } catch (SQLException sx) {
  88.         report(sx);
  89.         throw new Error("" + sx);
  90.     }
  91.     }
  92.  
  93.     static String names;
  94.     static String values;
  95.     static String updates;
  96.  
  97.     private static void start() {
  98.     names = "";
  99.     values = "";
  100.         updates = "";
  101.     }
  102.  
  103.     private static void push(String name, String value) {
  104.         if (names.length() > 0) {
  105.         names += ", ";
  106.     }
  107.     names += name;
  108.         if (values.length() > 0) {
  109.         values += ", ";
  110.     }
  111.     values += "'" + value + "'";
  112.     if (updates.length() > 0) {
  113.         updates += ", ";
  114.     }
  115.     updates += name + " = '" + value + "'";
  116.     }
  117.  
  118.  
  119.     static void insertBox(String model) {
  120.     try {
  121.         con.setAutoCommit(false);
  122.  
  123.         // First check if there is already a corresponding column in the table
  124.         Statement s = getStatement();
  125.         String query = "SELECT MODEL FROM BOXES WHERE MODEL = '" + model + "'";
  126.  
  127.         ResultSet rs = s.executeQuery(query);
  128.         int count = 0;
  129.         while (rs.next()) {
  130.         count++;
  131.         }
  132.         s.close();
  133.  
  134.         String sql;
  135.         if (count == 0) {
  136.             sql = "INSERT INTO BOXES ( " + names + " ) VALUES ( " + values + " )";
  137.         } else {
  138.             sql = "UPDATE BOXES SET " + updates + " WHERE  MODEL = '" + model + "'";
  139.                 
  140.         }
  141.  
  142.         s = getStatement();
  143.         s.execute(sql);
  144.         s.close();
  145.  
  146.         con.commit();
  147.  
  148.     } catch (SQLException sx) {
  149.         report(sx);
  150.         throw new Error("" + sx);
  151.     }
  152.     }
  153.  
  154.  
  155.     static void box(String q, String model, String cpu, int mhz, int int92, int fp92, int dollars, String config) {
  156.     String quarter = q.substring(2,4) + q.substring(0,2);
  157.  
  158.     start();
  159.     push("QUARTER", quarter);
  160.     push("VENDOR", "Sun");
  161.     push("ARCHITECTURE", "Sparc");
  162.     push("MODEL", model);
  163.     push("CHIP", cpu);
  164.     if (mhz != 0) {
  165.         push("MHZ", "" + mhz);
  166.     }
  167.     if (int92 != 0) {
  168.         push("SPECINT92", "" + int92);
  169.     }
  170.     if (fp92 != 0) {
  171.         push("SPECFP92", "" + fp92);
  172.     }
  173.     if (dollars != 0) {
  174.         push("PRICE", "" + dollars);
  175.     }
  176.     if (config != null && !config.equals("")) {
  177.         push("CONFIGURATION", config);
  178.     }
  179.     insertBox(model);
  180.     }
  181.  
  182.  
  183.     static void box(String q, String model, String cpu, String mhz, String spec89, String dollars) {
  184.  
  185.     String quarter = q.substring(2,4) + q.substring(0,2);
  186.  
  187.     start();
  188.     push("QUARTER", quarter);
  189.     push("VENDOR", "Sun");
  190.     push("ARCHITECTURE", "Sparc");
  191.     push("MODEL", model);
  192.     push("CHIP", cpu);
  193.         push("MHZ", mhz);
  194.     push("SPEC89", spec89);
  195.         push("PRICE", dollars);
  196.     insertBox(model);
  197.     }
  198.  
  199.     static void chip(int year, String name, String nickname, String pipeline, int lhz, int hhz, String version) {
  200.     start();
  201.     push("YEAR", "" + year);
  202.     push("NAME", name);
  203.     push("NICKNAME", nickname);
  204.     push("PIPELINE", pipeline);
  205.     if (lhz != 0) {
  206.        push("LOW_MHZ", "" + lhz);
  207.     }
  208.     if (hhz != 0) {
  209.         push("HIGH_MHZ", "" + hhz);
  210.     }
  211.     push("VARIANT", version);
  212.     
  213.     try {
  214.         con.setAutoCommit(false);
  215.  
  216.         // First check if there is already a corresponding column in the table
  217.         Statement s = getStatement();
  218.         String query = "SELECT NAME FROM CHIPS WHERE NAME = '" + name + "'";
  219.  
  220.         ResultSet rs = s.executeQuery(query);
  221.         int count = 0;
  222.         while (rs.next()) {
  223.         count++;
  224.         }
  225.         s.close();
  226.  
  227.         String sql;
  228.         if (count == 0) {
  229.             sql = "INSERT INTO CHIPS ( " + names + " ) VALUES ( " + values + " )";
  230.         } else {
  231.             sql = "UPDATE CHIPS SET " + updates + " WHERE NAME = '" + name + "'";
  232.                 
  233.         }
  234.  
  235.         s = getStatement();
  236.         s.execute(sql);
  237.         s.close();
  238.  
  239.         con.commit();
  240.  
  241.     } catch (SQLException sx) {
  242.         report(sx);
  243.         throw new Error("" + sx);
  244.     }
  245.     }
  246.  
  247.     static void pipeline(int year, String name, int stages) {
  248.     start();
  249.     push("YEAR", "" + year);
  250.     push("NAME", name);
  251.     if (stages != 0) {
  252.         push("STAGES", "" + stages);
  253.     }
  254.     
  255.     try {
  256.         con.setAutoCommit(false);
  257.  
  258.         // First check if there is already a corresponding column in the table
  259.         Statement s = getStatement();
  260.         String query = "SELECT NAME FROM PIPELINES WHERE NAME = '" + name + "'";
  261.  
  262.         ResultSet rs = s.executeQuery(query);
  263.         int count = 0;
  264.         while (rs.next()) {
  265.         count++;
  266.         }
  267.         s.close();
  268.  
  269.         String sql;
  270.         if (count == 0) {
  271.             sql = "INSERT INTO PIPELINES ( " + names + " ) VALUES ( " + values + " )";
  272.         } else {
  273.             sql = "UPDATE PIPELINES SET " + updates + " WHERE NAME = '" + name + "'";
  274.                 
  275.         }
  276.  
  277.         s = getStatement();
  278.         s.execute(sql);
  279.         s.close();
  280.  
  281.         con.commit();
  282.  
  283.     } catch (SQLException sx) {
  284.         report(sx);
  285.         throw new Error("" + sx);
  286.     }
  287.     
  288.     }
  289.  
  290.     static void addSparcs() {
  291.  
  292.     pipeline(1995, "Spitfire", 0);
  293.     pipeline(1994, "HyperSparc", 0);
  294.     pipeline(1992, "Viking", 0);
  295.     pipeline(1992, "Tsunami", 0);
  296.     pipeline(1987, "Original", 0);
  297.  
  298.     chip(1995, "UltraSparc", "Spitfire", "Spitfire", 143, 200, "V9");
  299.     chip(1996, "UltraSparc-II", "Blackbird", "Spitfire", 0, 0, "V9");
  300.     chip(1994, "HyperSparc", "", "HyperSparc", 75, 150, "V8");
  301.     chip(1992, "SuperSparc", "Viking", "Viking", 30, 60, "V8");
  302.     chip(1995, "SuperSparc-II", "Voyager", "Viking", 75, 85, "V8");
  303.     chip(1992, "MicroSparc", "Tsunami", "Tsunami", 50, 50, "V8");
  304.     chip(1994, "MicroSparc-II", "Swift", "Tsunami", 60, 110, "V8");
  305.     chip(1989, "Cypress", "", "Original", 25, 40, "V7");
  306.     chip(1987, "Fujitsu", "", "Original", 17, 25, "V7");
  307.  
  308.  
  309.     box("Q295", "SPARCstation 4/110",    "MicroSparc-II",     110,     65,  53,    4000,     "15\"C 32M 1GD");
  310.     box("Q295", "SPARCstation 5/110",     "MicroSparc-II",     110,     79,  65,   10000,     "17\"C 32M 1GD");
  311.     box("Q194", "SPARCstation Voyager","MicroSparc-II",       60,     43,  37,    9000,    "");
  312.     box("Q294", "SPARCstation 20/50",     "SuperSparc",           50,     69,  78,   12000,     "");
  313.     box("Q294", "SPARCstation 20/51",     "SuperSparc",           50,     74,  85,   0,         "");
  314.     box("Q294", "SPARCstation 20/61",     "SuperSparc",          60,     89, 103,   16000,     "");
  315.     box("Q195", "SPARCstation 20/71",     "SuperSparc-II",       75,    126, 121,   18000,     "17\"C 32M 1GD");
  316.     box("Q295", "SPARCstation 20/HS21","HyperSparc",         125,       131, 153,   19000,    "17\"C 32M 1GD");
  317.     box("Q495", "SPARCstation 20/151", "HyperSparc",        150,    169, 208,   19000,    "20\"C 32M 1GD");
  318.     box("Q495", "Ultra 1/140",     "UltraSparc",            143,     215, 303,   17000,     "17\"C 32M 1GD");
  319.     box("Q495", "Ultra 1/170",     "UltraSparc",        167,    252, 351,   26000,      "20\"C 64M 2GD");
  320.     box("Q196", "Ultra 2/2200", "UltraSparc",         200,    332, 505,   58000,     "20\"C 256M 4GD");
  321.  
  322.     box("??87", "Sun 4/280", "Fujitsu", "17", "8.1", "");
  323.     box("Q289", "SPARCstation 1", "Fujitsu", "20", "8.4", "9000");
  324.     box("Q289", "SPARCstation 330", "Cypress", "25", "11.8", "29000");
  325.     box("Q290", "SPARCstation 1+", "Fujitsu", "25", "11.8", "9000");
  326.     box("Q290", "SPARCstation SLC", "Fujitsu", "20", "9.8", "5000");
  327.     box("Q390", "SPARCstation IPC", "Fujitsu", "25", "13.5", "9000");
  328.     box("Q490", "SPARCstation 2", "Cypress", "40", "25.0", "15000");
  329.     box("Q391", "SPARCstation ELC", "Cypress", "33", "20.1", "4000");
  330.     box("Q390", "SPARCstation IPC", "Fujitsu", "25", "13.5", "6000");
  331.     box("Q391", "SPARCstation IPX", "Cypress", "40", "24.2", "10000");
  332.  
  333.     box("Q390", "SPARCstation IPC", "Cypress", 25, 14, 11, 6000, "");
  334.     box("Q391", "SPARCstation ELC", "Cypress", 33, 18, 18, 4000, "");
  335.     box("Q391", "SPARCstation IPX", "Cypress", 40, 22, 21, 10000, "");
  336.     box("Q392", "SPARCstation 10/41", "UltraSparc", 40, 53, 65, 23000, "");
  337.     box("Q490", "SPARCstation 2", "Cypress", 40, 22, 23, 15000, "");
  338.     box("Q392", "SPARCstation 10/20", "UltraSparc", 33, 41, 44, 16000, "");
  339.     box("Q492", "SPARCstation LX", "MicroSparc", 50, 26, 21, 8000, "");
  340.     box("Q392", "SPARCstation 10/30", "UltraSparc", 36, 44, 53, 16000, "");
  341.     box("Q392", "SPARCstation 10/40", "UltraSparc", 40, 53, 65, 21000, "");
  342.     box("Q293", "SPARCstation 10/51", "UltraSparc", 50, 65, 80, 28000, "");
  343.     box("Q294", "SPARCstation 5", "MicroSparc-II", 70, 57, 47, 4000, "15\"C 16M 500MD");
  344.     box("Q494", "SPARCstation 20/HS11", "HyperSparc", 100, 104, 128, 19000, "17\"C 32M 1GD");
  345.     box("Q195", "SPARCstation 4", "MicroSparc-II", 70, 60, 47, 4000, "15\"C 16M 535MD");
  346.     box("Q294", "SPARCstation 5", "MicroSparc-II", 85, 64, 56, 10000, "17\"C 32M 1GD");
  347.     box("Q492", "SPARCclassic", "MicroSparc", 50, 26, 21, 3000, "15\"C 16M 200MD");
  348.     box("Q295", "SPARCstation 4/85", "MicroSparc-II", 85, 65, 53, 4000, "15\"C 16M 535MD");
  349.  
  350.     }
  351.  
  352.     public static Connection connect() {
  353.         // DriverManager.setLogStream(System.err);
  354.  
  355.     if (con != null) {
  356.         return (con);
  357.     }
  358.  
  359.     try {
  360.         // Make sure there is a JDBC-ODBC driver loaded.
  361.         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  362.     } catch (Exception ex) {
  363.         System.err.println("Couldn't load JDBC-ODBC bridge driver");
  364.         System.err.println("Caught Exception : " + ex);
  365.         ex.printStackTrace();
  366.         return null;
  367.     }
  368.  
  369.     String url = "jdbc:odbc:SQLSERVER";
  370.  
  371.     println("Trying to connect to URL " + url);
  372.     try {
  373.  
  374.         java.util.Properties info = new java.util.Properties();
  375.         info.put("user", "guest");
  376.         info.put("password", "guest");
  377.         con = DriverManager.getConnection(url, info);
  378.  
  379.         println("Got connection " + con);
  380.         return (con);
  381.     } catch (SQLException ex) {
  382.         report(ex);
  383.         throw new Error("" + ex);
  384.     } catch (Exception ex) {
  385.         throw new Error("" + ex);
  386.     }
  387.     }
  388.  
  389.     public static Statement getStatement() {
  390.  
  391.     try {
  392.         return (con.createStatement());
  393.     } catch (SQLException ex) {
  394.         report(ex);
  395.         throw new Error("" + ex);
  396.     }
  397.     }
  398.  
  399.     public static void report (SQLException sx) {
  400.         println("Caught SQLsxception " + sx);
  401.     println("   reason = " + sx.getMessage());
  402.     println("   vendor code = " + sx.getErrorCode());
  403.     println("   SQL state = " + sx.getSQLState());
  404.     sx.printStackTrace();
  405.     }
  406.  
  407.     public static void println(String mess) {
  408.     System.err.println(mess);
  409.     }
  410.  
  411.  
  412.     private static Connection con = null;
  413. }
  414.