private File findMostLikelyHomeDir( List<File> possibleHomeDirList, List<String> homeContentPathList) { int numFoundMax = 0; File mostLikelyHomeDir = null; for (File possibleHomeDir : possibleHomeDirList) { trace(String.format("Is [%s] my home directory?", possibleHomeDir)); int numFound = 0; for (String homeContentPath : homeContentPathList) { File homeContentFile = new File(possibleHomeDir, homeContentPath); if (homeContentFile.exists()) { trace(String.format(" [%s] contained? Yes.", homeContentPath)); numFound++; } else { trace(String.format(" [%s] contained? No.", homeContentPath)); } } if (numFound == 0) { trace("No."); } else { trace(String.format("Maybe. %d related file(s) found.", numFound)); } if (numFound > numFoundMax) { try { mostLikelyHomeDir = possibleHomeDir.getCanonicalFile(); numFoundMax = numFound; } catch (IOException e) { // ??? } } } return mostLikelyHomeDir; }
/** Generate a local password and save it in the local-password file. */ public void postConstruct() { logger.fine("Generating local password"); SecureRandom random = new SecureRandom(); byte[] pwd = new byte[PASSWORD_BYTES]; random.nextBytes(pwd); password = toHex(pwd); File localPasswordFile = new File(env.getConfigDirPath(), LOCAL_PASSWORD_FILE); PrintWriter w = null; try { if (!localPasswordFile.exists()) { localPasswordFile.createNewFile(); /* * XXX - There's a security hole here. * Between the time the file is created and the permissions * are changed to prevent others from opening it, someone * else could open it and wait for the data to be written. * Java needs the ability to create a file that's readable * only by the owner; coming in JDK 7. */ localPasswordFile.setWritable(false, false); // take from all localPasswordFile.setWritable(true, true); // owner only localPasswordFile.setReadable(false, false); // take from all localPasswordFile.setReadable(true, true); // owner only } w = new PrintWriter(localPasswordFile); w.println(password); } catch (IOException ex) { // ignore errors logger.log(Level.FINE, "Exception writing local password file", ex); } finally { if (w != null) w.close(); } }
public void reassemble(int totalpieces, int peer_ID, long fileSize, long pieceSize) { // System.out.println("%%%%"); String dir = "peer_" + peer_ID; File theDir = new File(dir); if (!theDir.exists()) { try { theDir.mkdir(); } catch (SecurityException e) { System.err.println(e); } } String fileName; for (int i = 1; i <= totalpieces - 1; i++) { Integer num = new Integer(i); byte[] temp = new byte[4]; int size = 0; size = size - 4; System.out.println(i + " = " + size); byte[] buffer = new byte[size]; } Integer num = new Integer(totalpieces); int size = (int) (fileSize % pieceSize); System.out.println(size); byte[] buffer = new byte[size]; }
public FileBasedGenerationalDriver(File rootFolder) { super(); if (rootFolder == null || !rootFolder.exists()) throw new IllegalArgumentException("Valid Root folder is required " + rootFolder); root = rootFolder; mode = JSON_MODE; }
public File getRunDir(Run run) { String runName = run.getName(); if (runName == null) throw new IllegalArgumentException("Run doesn't have a name."); File runDir = new File(root, runName); if (!runDir.exists()) runDir.mkdir(); return runDir; }
@Timeout public void handletimeout(Timer timer) { // delete temp files for (File f : deleteTempFileList) { dbgLog.fine("file to be deleted: path=" + f.getAbsolutePath() + "\tname=" + f.getName()); if (f.exists()) { boolean sc = f.delete(); if (!sc) { dbgLog.fine( "failed to delete file: path=" + f.getAbsolutePath() + "\tname=" + f.getName()); } else { dbgLog.fine("successfully deleted? let's check its existence"); if (f.exists()) { dbgLog.fine("surprise: actually the File still exists"); } else { dbgLog.fine("The file no longer exists"); } } } } }
public boolean compile(String sol) throws ServerException { try { createSrcFile(); File f = new File(workDir, srcFileName); FileWriter fw = new FileWriter(f); fw.write(sol); fw.close(); exec(compileCmd, "", 2, 2048); File ef = new File(workDir, executableName); return ef.exists(); } catch (Exception e) { throw UtilSrv.se("Can't compile.", e); } }
public void save(String gamePath, String dataName) { XMLExporter ex = XMLExporter.getInstance(); OutputStream os = null; try { File daveFolder = new File(System.getProperty("user.dir") + File.separator + gamePath); if (!daveFolder.exists() && !daveFolder.mkdirs()) { Logger.getLogger(Type.class.getName()).log(Level.SEVERE, "Error creating save file!"); throw new IllegalStateException("SaveGame dataset cannot be created"); } File saveFile = new File(daveFolder.getAbsolutePath() + File.separator + dataName); if (!saveFile.exists()) { if (!saveFile.createNewFile()) { Logger.getLogger(Type.class.getName()).log(Level.SEVERE, "Error creating save file!"); throw new IllegalStateException("SaveGame dataset cannot be created"); } } os = new BufferedOutputStream(new FileOutputStream(saveFile)); // os = new GZIPOutputStream(new BufferedOutputStream(new FileOutputStream(saveFile))); ex.save(this, os); } catch (IOException ex1) { Logger.getLogger(Type.class.getName()).log(Level.SEVERE, "Error saving data: {0}", ex1); ex1.printStackTrace(); throw new IllegalStateException("SaveGame dataset cannot be saved"); } finally { try { if (os != null) { os.close(); } } catch (IOException ex1) { Logger.getLogger(Type.class.getName()).log(Level.SEVERE, "Error saving data: {0}", ex1); ex1.printStackTrace(); throw new IllegalStateException("SaveGame dataset cannot be saved"); } } }
/** Get the "mods" folder */ public File getModsFolder() { if (modsFolder == null) { modsFolder = new File(Minecraft.getMinecraftDir(), "mods"); if (!modsFolder.exists() || !modsFolder.isDirectory()) { try { // Attempt to create the "mods" folder if it does not already exist modsFolder.mkdirs(); } catch (Exception ex) { } } } return modsFolder; }
/** Enumerate the java class path and "mods" folder to find mod classes, then load the classes */ private void prepareMods() { // List of mod files in the "mods" folder LinkedList<File> modFiles = new LinkedList<File>(); // Find and enumerate the "mods" folder File modFolder = getModsFolder(); if (modFolder.exists() && modFolder.isDirectory()) { logger.info("Mods folder found, searching " + modFolder.getPath()); findModFiles(modFolder, modFiles); logger.info("Found " + modFiles.size() + " mod file(s)"); } // Find and enumerate classes on the class path HashMap<String, Class> modsToLoad = null; try { logger.info("Enumerating class path..."); String classPath = System.getProperty("java.class.path"); String classPathSeparator = System.getProperty("path.separator"); String[] classPathEntries = classPath.split(classPathSeparator); logger.info(String.format("Class path separator=\"%s\"", classPathSeparator)); logger.info( String.format( "Class path entries=(\n classpathEntry=%s\n)", classPath.replace(classPathSeparator, "\n classpathEntry="))); logger.info("Loading mods from class path..."); modsToLoad = findModClasses(classPathEntries, modFiles); logger.info("Mod class discovery completed"); } catch (Throwable th) { logger.log(Level.WARNING, "Mod class discovery failed", th); return; } loadMods(modsToLoad); }
public String getRunData(Run run, String name) { File file = new File(getRunDir(run), name); String retVal = null; if (!file.exists()) return null; try { BufferedReader reader = new BufferedReader(new FileReader(file)); StringBuilder builder = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { builder.append(line); } reader.close(); retVal = builder.toString(); } catch (Exception exp) { throw new IllegalArgumentException( "Error trying to read data at " + file.getAbsolutePath(), exp); } return retVal; }
public static TypeList load(String gamePath, String dataName) { System.out.println("load:" + dataName); InputStream is = null; Savable sav = null; try { File file = new File( System.getProperty("user.dir") + File.separator + gamePath + File.separator + dataName); if (!file.exists()) { return null; } is = new BufferedInputStream(new FileInputStream(file)); // is = new GZIPInputStream(new BufferedInputStream(new FileInputStream(file))); XMLImporter imp = XMLImporter.getInstance(); // if (manager != null) { // imp.setAssetManager(manager); // } sav = imp.load(is); } catch (IOException ex) { Logger.getLogger(Type.class.getName()).log(Level.SEVERE, "Error loading data: {0}", ex); ex.printStackTrace(); } finally { if (is != null) { try { is.close(); } catch (IOException ex) { Logger.getLogger(Type.class.getName()).log(Level.SEVERE, "Error loading data: {0}", ex); ex.printStackTrace(); } } } return (TypeList) sav; }
/** * Callback method to process modifications in the common ConfigOptions panel. ConfigOptions was * developed to be common to many applications (even though we only have three modes), so it does * not have any knowledge of how we are using it within this dialog box. So ConfigOptions just * sends updates to registered Observers whenever anything changes. We can receive those * notifications here, and decide whether we have enough information to enable the "Connect" * button of the dialog box. */ public void update(Observable o, Object arg) { // we are going to ignore the Observable object, since we are only // observing one object. All we are interested in is the argument. if (!(arg instanceof OptionUpdate)) { log.log( Level.WARNING, "DatabaseLocationDialog received update type: " + arg, new IllegalArgumentException()); return; } OptionUpdate optionUpdate = (OptionUpdate) arg; // load saved configuration SavedConfiguration config = SavedConfiguration.getSavedConfiguration(); switch (optionUpdate.getUpdateType()) { case DB_LOCATION_CHANGED: location = (String) optionUpdate.getPayload(); if (configOptions.getApplicationMode() == ApplicationMode.STANDALONE_CLIENT) { File f = new File(location); if (f.exists() && f.canRead() && f.canWrite()) { validDb = true; log.info("File chosen " + location); config.setParameter(SavedConfiguration.DATABASE_LOCATION, location); } else { log.warning("Invalid file " + location); } } else { try { if (location.matches("\\d+\\.\\d+\\.\\d+\\.\\d+")) { // location given matches 4 '.' separated numbers // regex could be improved by limiting each quad to // no more than 3 digits. String[] quads = location.split("\\."); byte[] address = new byte[quads.length]; for (int i = 0; i < quads.length; i++) { address[i] = new Integer(quads[i]).byteValue(); } InetAddress.getByAddress(address); } else { InetAddress.getAllByName(location); } log.info("Server specified " + location); validDb = true; config.setParameter(SavedConfiguration.SERVER_ADDRESS, location); } catch (UnknownHostException uhe) { log.warning("Unknown host: " + location); validDb = false; } } break; case PORT_CHANGED: port = (String) optionUpdate.getPayload(); int p = Integer.parseInt(port); if (p >= LOWEST_PORT && p < HIGHEST_PORT) { if (p < SYSTEM_PORT_BOUNDARY) { log.info("User chose System port " + port); } else if (p < IANA_PORT_BOUNDARY) { log.info("User chose IANA port " + port); } else { log.info("User chose dynamic port " + port); } validPort = true; config.setParameter(SavedConfiguration.SERVER_PORT, port); } else { validPort = false; } break; case NETWORK_CHOICE_MADE: networkType = (ConnectionType) optionUpdate.getPayload(); switch (networkType) { case SOCKET: log.info("Server connection via Sockets"); break; case RMI: log.info("Server connection via RMI"); break; default: log.info("Unknown connection type: " + networkType); break; } config.setParameter(SavedConfiguration.NETWORK_TYPE, "" + networkType); validCnx = true; break; default: log.warning("Unknown update: " + optionUpdate); break; } boolean allValid = validDb && validPort && validCnx; connectButton.setEnabled(allValid); }
public static void main(String[] args) { log = Logger.getLogger(Main.class.getName()); try { // Setting up logging Logger packageLog = Logger.getLogger(ChatBot.class.getPackage().getName()); File logFile = new File(LOGFILE + ".log"); if (logFile.exists()) { Calendar cal = Calendar.getInstance(); File backup = new File( String.format( "%s_%d_%d_%d.log", LOGFILE, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH))); if (backup.exists()) try (BufferedReader reader = new BufferedReader(new FileReader(logFile)); PrintWriter writer = new PrintWriter(new FileWriter(backup, true))) { char buff[] = new char[1024]; int n; while ((n = reader.read(buff)) > 0) { writer.write(buff, 0, n); } log.info("Appened log to backup " + backup.getName()); } catch (IOException e) { log.log(Level.SEVERE, "Couldn't append log to " + backup.getName(), e); } else { try { FileUtils.moveFile(logFile, backup); log.info("Moved log to backup " + backup.getName()); } catch (IOException e) { log.log(Level.SEVERE, "Couldn't move log to " + backup.getName(), e); } } } //noinspection ResultOfMethodCallIgnored // logFile.delete(); Handler handler = new FileHandler(LOGFILE + ".log"); handler.setFormatter(new SimpleFormatter()); packageLog.setLevel(Level.FINE); packageLog.addHandler(handler); // Starting up XMPPCraft Main main = new Main(); PipeInputStream stdinPipe = new PipeInputStream(1048576); PipeOutputStream stdoutPipe = new PipeOutputStream(); main.init( System.in, new PipeOutputStream(stdinPipe), new PipeInputStream(stdoutPipe, 1048576)); System.setIn(stdinPipe); System.setOut(new PrintStream(new TeeOutputStream(System.out, stdoutPipe))); main.start(); // Starting up Minecraft MinecraftServer.main(args); // DummyMinecraftServer.main(args); } catch (KeyManagementException | NoSuchAlgorithmException | SmackException | XMPPException | IOException e) { String filename = String.format( "crashreport_%s_%s.log", e.getClass().getSimpleName(), new SimpleDateFormat("MM_dd.HH_mm").format(new Date())); File f = new File(filename); try { if (f.createNewFile()) { PrintWriter out = new PrintWriter(f); out.println("Error on startup :"); out.printf( "JVM: %s %s on %s\n", System.getProperty("java.vm.name"), System.getProperty("java.runtime.version"), System.getProperty("os.name")); e.printStackTrace(out); out.flush(); out.close(); } } catch (IOException ignore) { } // lol what can you do log.severe("Crash detected. Generating report."); } }
public static void main(String arg[]) { Hashtable ignoreList = new Hashtable(); Class cl = null; Model model = null; System.out.println("Synchronizing forms with database..."); Db.init(); try { DatabaseMetaData meta = Db.getCon().getMetaData(); String[] types = {"TABLE"}; ResultSet rs = meta.getTables(null, null, "%", types); // read ignore.list ignoreList = AutogenerateUtil.readIgnoreList(); // prepare directory File fDir = new File("../../web/WEB-INF/views/crud_form"); if (!fDir.exists()) fDir.mkdir(); while (rs.next()) { // proper file name generationm String className = ""; String tableName = rs.getString("TABLE_NAME"); className = StringUtil.toProperClassName(tableName); // space allowed... // tableName = tableName.toUpperCase(); //If Oracle that need uppercase tablename. In MySQL // in Mac OS X (and probably Linux), it mustbe case sensitive // open table String sql = "select * from " + tableName; PreparedStatement pstmt = Db.getCon() .prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet resultSet = pstmt.executeQuery(); ResultSetMetaData metaColumn = resultSet.getMetaData(); int nColoumn = metaColumn.getColumnCount(); // get foreign keys,and stored it in hashtable ResultSet rsFk = meta.getImportedKeys(Db.getCon().getCatalog(), null, tableName); Hashtable hashFk = new Hashtable(); System.out.println("FK Infos for table " + tableName); while (rsFk.next()) { String pkTableName = rsFk.getString("PKTABLE_NAME"); String pkColumnName = rsFk.getString("PKCOLUMN_NAME"); String fkColumnName = rsFk.getString("FKCOLUMN_NAME"); int fkSequence = rsFk.getInt("KEY_SEQ"); System.out.println( tableName + "." + fkColumnName + " => " + pkTableName + "." + pkColumnName); hashFk.put(fkColumnName, pkColumnName); hashFk.put(fkColumnName + "_table", pkTableName); } rsFk.close(); // create form page System.out.println( "Creating form page for " + tableName + " from table + " + application.config.Database.DB + "." + tableName); fDir = new File("../../web/WEB-INF/views/" + tableName); if (!fDir.exists()) fDir.mkdir(); File f = new File("../../web/WEB-INF/views/" + tableName + "/form_" + tableName + ".jsp"); if (ignoreList.get("form_" + tableName + ".jsp") != null) { Logger.getLogger(GenerateForm.class.getName()) .log(Level.INFO, "Ignoring creation of form_" + tableName + ".jsp"); } else { Writer out = new FileWriter(f); out.write( "<%@ page contentType=\"text/html; charset=UTF-8\" language=\"java\" import=\"java.sql.*,recite18th.library.Db,application.config.Config,recite18th.library.Pagination\" %>"); out.write("<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n"); out.write("<%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\n"); // create model for this class, use in detecting its PK Field cl = Class.forName("application.models." + className + "Model"); model = (Model) cl.newInstance(); // iterate all columns resultSet.beforeFirst(); resultSet.next(); out.write( "<table border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#E8EDFF\">\n"); out.write("<tr>\n"); out.write("<td>\n"); out.write( "<form action=\"<%=Config.base_url%>index/" + className + "/save\" method=\"post\" enctype=\"multipart/form-data\">\n"); // I hope it's // okay to // default it to // multipart data out.write("<table id=\"hor-zebra\" summary=\"Form " + className + "\">\n"); out.write("<thead>\n"); out.write("<tr>\n"); out.write("<th colspan=\"2\" class=\"odd\" scope=\"col\">Form " + className + " </th>\n"); out.write("</tr>\n"); out.write("</thead>\n"); out.write("<tbody>\n"); for (int i = 1; i <= nColoumn; i++) { String columnName = metaColumn.getColumnName(i); String dataType = metaColumn.getColumnClassName(i); out.write("<tr>\n"); // if(!columnName.equals(model.getPkFieldName())) // implementing the case of PK not // AutoIncrement // if(!metaColumn.isAutoIncrement(i)) // { // varying field input for type // foreign field, as chooser page view if (hashFk.get(columnName) != null) // TODO: what if PK is chooser also?? :) CUrrently I add it manually the // hidden_*Pk_nama* field { String fkTableName = hashFk.get(columnName + "_table") + ""; String fkColumnName = hashFk.get(columnName) + ""; String fkController = StringUtil.toProperClassName(fkTableName); out.write("<td>" + columnName + "</td>\n"); out.write("<td>\n"); out.write( "<input name=\"" + columnName + "\" type=\"hidden\" id=\"" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); out.write( "<input name=\"label_" + columnName + "\" readonly=\"true\" type=\"text\" id=\"label_" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); // TODO : translate I out.write( "<a href=\"<%=Config.base_url%>index/" + fkController + "/chooseView?height=220&width=700\" class=\"thickbox\">Pilih</a>"); out.write("</td>\n"); } else { // regular field input, not foreign key case if (!columnName.equals(model.getPkFieldName())) { out.write("<td>" + columnName + "</td>\n"); out.write("<td>\n"); // ENUM Column, displayed as HTML SELECT. May will only work for mysql only... Logger.getLogger(GenerateForm.class.getName()) .log(Level.INFO, columnName + " type is " + metaColumn.getColumnType(i)); if (metaColumn.getColumnType(i) == 1) { String enum_content[][] = Db.getDataSet( "SELECT SUBSTRING(COLUMN_TYPE,6,length(SUBSTRING(COLUMN_TYPE,6))-1) as enum_content " + " FROM information_schema.COLUMNS " + " WHERE TABLE_NAME='" + tableName + "' " + " AND COLUMN_NAME='" + columnName + "'"); if (enum_content.length > 0) { // Logger.getLogger(Model.class.getName()).log(Level.INFO, "Enum Content = " + // enum_content[0][0]); String enum_list[] = enum_content[0][0].split(","); out.write("<select name=\"" + columnName + "\" id=\"" + columnName + "\">\n"); for (int ienum_list = 0; ienum_list < enum_list.length; ienum_list++) out.write( "\t<option <c:if test=\"${model." + columnName + "=='" + enum_list[ienum_list].substring( 1, enum_list[ienum_list].length() - 1) + "'}\"> selected=\"selected\" </c:if> value=\"" + enum_list[ienum_list].substring( 1, enum_list[ienum_list].length() - 1) + "\">" + enum_list[ienum_list].substring( 1, enum_list[ienum_list].length() - 1) + "</option>\n"); out.write("</select>\n\n"); } else { // no enum content detected.. :) out.write( "<input name=\"" + columnName + "\" type=\"text\" id=\"" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); } } else if (metaColumn.getColumnType(i) == 91) { out.write( "<input name=\"" + columnName + "\" type=\"text\" id=\"" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); out.write("<script>\n"); out.write( " if(!isValidDate($('#" + columnName + "').val())) $('#" + columnName + "').val('1980-1-1');\n"); // TODO: default value out.write(" (function($){\n"); out.write(" $('#" + columnName + "').click(function() {\n"); out.write(" $('#" + columnName + "').DatePickerShow();\n"); out.write(" });\n"); out.write(" $('#" + columnName + "').DatePicker({\n"); out.write(" format:'Y-m-d',\n"); out.write(" date: $('#" + columnName + "').val(),\n"); out.write(" current: $('#" + columnName + "').val(),\n"); out.write(" starts: 1,\n"); out.write(" position: 'r',\n"); out.write(" onBeforeShow: function(){\n"); out.write( " $('#" + columnName + "').DatePickerSetDate($('#" + columnName + "').val(), true);\n"); out.write(" },\n"); out.write(" onChange: function(formated, dates){\n"); out.write(" $('#" + columnName + "').DatePickerHide();\n"); out.write(" $('#" + columnName + "').val(formated);\n"); out.write(" }\n"); out.write(" });\n"); out.write(" })(jQuery)\n"); out.write(" </script>\n"); } else { out.write( "<input name=\"" + columnName + "\" type=\"text\" id=\"" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); out.write("${" + columnName + "_error}\n"); // regular input field } } else { // PK case if (metaColumn.isAutoIncrement(i)) { out.write( "<input name=\"hidden_" + columnName + "\" type=\"hidden\" id=\"hidden_" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); } else { out.write("<td>" + columnName + "</td>\n"); out.write("<td>\n"); out.write( "<input name=\"" + columnName + "\" type=\"text\" id=\"" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); out.write("${" + columnName + "_error}\n"); out.write( "<input name=\"hidden_" + columnName + "\" type=\"hidden\" id=\"hidden_" + columnName + "\" value=\"${model." + columnName + "}\"/>\n"); } } out.write("</td>\n"); } out.write("</tr>\n"); } out.write("<tr class=\"odd\">\n"); out.write("<td> </td>\n"); out.write("<td><input type=\"submit\" name=\"Submit\" value=\"Simpan\">"); out.write( "<input name=\"Button\" type=\"button\" id=\"Submit\" value=\"Batal\" onClick=\"javascript:history.back(-1);\"></td>\n"); out.write("</tr>\n"); out.write("</tbody>\n"); out.write("</table>\n"); out.write("</form></td>\n"); out.write("</tr>\n"); out.write("</table>\n"); out.flush(); out.close(); } // create viewPage if (ignoreList.get("view_" + tableName + ".jsp") != null) { Logger.getLogger(GenerateForm.class.getName()) .log(Level.INFO, "Ignoring creation of view_" + tableName + ".jsp"); } else { System.out.println("Creating view page " + tableName); fDir = new File("../../web/WEB-INF/views/" + tableName); if (!fDir.exists()) fDir.mkdir(); File fView = new File("../../web/WEB-INF/views/" + tableName + "/view_" + tableName + ".jsp"); Writer outView = new FileWriter(fView); outView.write( "<%@ page contentType=\"text/html; charset=UTF-8\" language=\"java\" import=\"java.sql.*,recite18th.library.Db,application.config.Config,recite18th.library.Pagination\" %>"); outView.write("<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n"); outView.write( "<%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\n"); outView.write("<% int pagenum = 0; %>\n"); // outView.write("<%@ include file=\"/WEB-INF/views/header.jsp\" %>"); outView.write( "<a href=\"<%=Config.base_url%>index/" + className + "/input/-1\">Tambah Data</a>\n"); outView.write( "|| <a href=\"<%=Config.base_url%>index/" + className + "/print\">Cetak</a>\n"); outView.write("<table width=\"100%\" id=\"rounded-corner\">\n"); outView.write("<thead>\n"); // iterate all columns : table header outView.write(" <tr>\n"); outView.write(" <th scope=\"col\" class=\"rounded-company\">No.</th>\n"); resultSet.beforeFirst(); resultSet.next(); // get Primary Key Field Name : often use String pkFieldName = ""; try { Class params[] = null; Method objMethod = cl.getMethod("getPkFieldName", params); pkFieldName = "" + objMethod.invoke(model); } catch (Exception ex) { Logger.getLogger(Model.class.getName()).log(Level.SEVERE, null, ex); } // ALL Lower Case pkFieldName = pkFieldName.toLowerCase(); // customize column view page for (int i = 1; i <= nColoumn; i++) { String columnName = metaColumn.getColumnName(i).toLowerCase(); // Caution : ALL LowerCase String dataType = metaColumn.getColumnClassName(i); String thClass = "rounded-q1"; String thTitle = StringUtil.toProperFieldTitle(columnName); if (TableCustomization.getTable(tableName) != null) // there is customization for this table { if (TableCustomization.getTable(tableName).get(columnName) != null) { thTitle = TableCustomization.getTable(tableName).get(columnName) + ""; outView.write( " <th scope=\"col\" class=\"" + thClass + "\">" + thTitle + "</th>\n"); } } else { // standard view for this table : hide PK, because mostly is auto increment if (!metaColumn.isAutoIncrement(i)) outView.write( " <th scope=\"col\" class=\"" + thClass + "\">" + thTitle + "</th>\n"); } } outView.write(" <th scope=\"col\" class=\"rounded-q4\">Aksi</th>\n"); outView.write(" </tr>\n"); outView.write("</thead>\n"); outView.write("<tfoot>\n"); outView.write(" <tr>\n"); outView.write( " <td colspan=\"" + (nColoumn + 1) + "\" class=\"rounded-foot-left\"><%=Pagination.createLinks(pagenum)%></td>\n"); outView.write(" <td class=\"rounded-foot-right\"> </td>\n"); outView.write(" </tr>\n"); outView.write("</tfoot>\n"); outView.write("<tbody>\n"); outView.write(" <c:forEach items=\"${row}\" var=\"item\" varStatus=\"status\" >\n"); outView.write(" <tr>\n"); outView.write(" <td>${status.count}</td>\n"); // iterate all columns : table data resultSet.beforeFirst(); resultSet.next(); for (int i = 1; i <= nColoumn; i++) { String columnName = metaColumn.getColumnName(i); // if(!columnName.equals(pkFieldName)) //TOFIX : currently, PK Field is not shown if (TableCustomization.getTable(tableName) != null) { if (TableCustomization.getTable(tableName).get(columnName) != null) { outView.write(" <td>${item." + columnName + "}</td>\n"); } } else { if (!metaColumn.isAutoIncrement(i)) outView.write(" <td>${item." + columnName + "}</td>\n"); } } outView.write(" <td>\n"); outView.write( " <a href=\"<%=Config.base_url%>index/" + className + "/input/${item." + pkFieldName + "}\">Ubah</a>\n"); outView.write( " <a href=\"<%=Config.base_url%>index/" + className + "/delete/${item." + pkFieldName + "}\" onClick=\"return confirm('Apakah Anda yakin?');\">Hapus</a>\n"); outView.write(" </td>\n"); outView.write(" </tr>\n"); outView.write(" </c:forEach>\n"); outView.write("</tbody>\n"); outView.write("</table>\n"); // outView.write("<%@ include file=\"/WEB-INF/views/footer.jsp\" %>"); outView.flush(); outView.close(); } } } catch (Exception e) { e.printStackTrace(); } }