/* * Copyright (C) 2015 iZc * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package de.nplusc.izc.tools.baseTools; import de.nplusc.izc.tools.IOtools.FileTK; import de.nplusc.izc.tools.IOtools.PrintStreamCapturer; import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.io.*; import java.lang.reflect.Field; import java.security.MessageDigest; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.prefs.Preferences; import javax.swing.*; import net.rubygrapefruit.platform.Native; import net.rubygrapefruit.platform.ProcessLauncher; import org.apache.commons.exec.CommandLine; import org.apache.commons.exec.DefaultExecutor; import org.apache.commons.exec.Executor; import org.apache.commons.io.output.NullOutputStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * * @author LH */ @SuppressWarnings( "deprecation" ) public class Tools { private static final Logger l = LogManager.getLogger(); public static boolean execCrashed = false; private static boolean ContState; private static JDialog d; private static boolean hl=false; //private boolean ProcessReturn; private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz"; private static int logNumber; protected Tools() { //disabled Constructor } static { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); boolean hl = ge.isHeadless(); if(!hl){ //d = new JDialog(); } } /** * Method to pad the left of a Sting with given character * @param count Destination amount of data * @param base String to pad up * @param filler Padding data * @return Padded String */ public static String padLeft(final int count, final String base, final char filler) { if (base == null) { throw new NullPointerException(); } if (base.length() >= count) { return base; } char[] prefix = new char[count - base.length()]; Arrays.fill(prefix, filler); return new StringBuilder(count).append(prefix).append(base).toString(); } /** * Method rename and shorthand for Thread.sleep() * @param time Time to wait in ms */ public static void wait(int time) { try { Thread.sleep(time); } catch (InterruptedException ex) { ex.printStackTrace(); } } /** * SHA-Hashes a String * @param s String to hash * @return Hashed String */ public static String getSHAString(String s) { try { MessageDigest sha = MessageDigest.getInstance("SHA"); @SuppressWarnings("StringBufferMayBeStringBuilder") StringBuffer t = new StringBuffer(); byte[] digest = sha.digest(s.getBytes()); for (byte b : digest) { l.trace(String.format("%02x", b)); int val = ((int) b) & 0xff; if (val < 16) { t.append("0"); } t.append(Integer.toHexString(val)); } return t.toString(); } catch (Exception ex) { return null; } } /** * Integerizes a String * @param ip String to integerize * @return Array of Integers where each int is a Character of the string */ public static int[] lettersToInt(String ip) { ip = ip.toLowerCase(); char[] it = ip.toCharArray(); int[] ri = new int[it.length]; for (int i = 0; i < ri.length; i++) { ri[i] = (int) it[i]; } return ri; } /** * Sum of the Elements of the Array * @param i Integer-array to sumup * @return Sum of the elements */ public static int addIntsTogether(int[] i) { int t = 1; for (int X : i) { t *= X; } return t; } @Deprecated /** * HACK!!! * @param m unknown * @param ints unknown * @return unknown */ public static int addIntsTogether(HashMap m, boolean ints) { //boolean ints = !noints; String[] mk; Object[] mk2 = m.keySet().toArray(); mk = new String[mk2.length]; for (int i = 0; i < mk.length; i++) { String s = ""; //s.toString(); mk[i] = mk2[i].toString(); } int t = 1; for (String s : mk) { if (ints == true) { t *= Integer.valueOf(m.get(s)); } else { int t2 = 0; int[] itmp = lettersToInt(m.get(s)); for (int i : itmp) { t2 += i; } t += t2; } } return t; } @Deprecated /** * Adds the Strings together while respecting Alphabet and wraps . Dont use for new Code * @param s1 String 1 * @param s2 String 2 * @return the merged Strings */ public static String stringAdd(String s1, String s2) { char[] ca1 = s1.toLowerCase().toCharArray(); char[] ca2 = s2.toLowerCase().toCharArray(); int[] ci1 = new int[ca1.length]; int[] ci2 = new int[ca2.length]; String t; for (int i = 0; i < ca1.length; i++) { try { ci1[i] = Integer.valueOf(Character.toString(ca1[i])); } catch (Exception ex) { t = Character.toString(ca1[i]); ci1[i] = ALPHABET.indexOf(t) + 1; } } for (int i = 0; i < ca2.length; i++) { try { ci2[i] = Integer.valueOf(Character.toString(ca2[i])); } catch (Exception ex) { t = Character.toString(ca2[i]); ci2[i] = ALPHABET.indexOf(t) + 1; } } int l = ci1.length; if (ci1.length < ci2.length) { l = ci2.length; } int[] op = new int[l]; int i1, i2, i3; for (int i = 0; i < l; i++) { try { i1 = ci1[i]; } catch (Exception ex) { i1 = 0; } try { i2 = ci2[i]; } catch (Exception ex) { i2 = 0; } i3 = i1 + i1; if (i3 > 26) { i3 -= 26; } op[i] = i3; } return backString(op); } @Deprecated public static String backString(int[] ia) { int l = ia.length, i1; String[] r1 = new String[l]; String rl = ""; for (int i = 0; i < l; i++) { i1 = ia[i] - 1; if (i1 == -1) { i1++; } r1[i] = Character.toString(ALPHABET.charAt(i1)); } for (String s : r1) { rl += s; } return rl; } @Deprecated public static String stringFold(String s, int l, int rec)//halbiert Strings und addiert die Hälften { int l1 = s.length() / 2;//,l2; String sh1, sh2, so1; //int l2=l1+1-1;//Neuen Wet erzeugen!! //l2=l1*2 if ((l1 * 2) == s.length() - 1) { l1++; } sh1 = s.substring(0, l1++); sh2 = s.substring(l1++); so1 = stringAdd(sh1, sh2); if (so1.length() > l && rec > 0) { so1 = stringFold(so1, l, rec--); } return so1; } @Deprecated public static String stringFold(String s, int l) { return stringFold(s, l, 30); } /** * 2-Elemente-Meckermeldung * @param mode ignored * @param MSGLine1 Zeile 1 der Meldung * @param MSGLine2 ZEile 2 der Meldung * @return true if left button got pressed, false on right one */ public static boolean dlg(boolean mode, String MSGLine1, String MSGLine2) { return dlg(mode, MSGLine1, MSGLine2, "Fortfahren", "Abbrechen"); } /** * 2-Elemente-Meckermeldung * @param mode ignored * @param MSGLine1 Zeile 1 der Meldung * @param MSGLine2 ZEile 2 der Meldung * @param btnLeft MEssage of left button * @param btnRight MEssage of Right button * @return true if left button got pressed, false on right one */ public static boolean dlg(boolean mode, String MSGLine1, String MSGLine2, String btnLeft, String btnRight) { if(hl) { return false; } d=new JDialog(); JPanel p = new JPanel(); javax.swing.JButton btnYes = new javax.swing.JButton(); javax.swing.JButton btnNo = new javax.swing.JButton(); JLabel lblMSG = new JLabel(); JLabel lblMSG2 = new JLabel(); d.setModal(mode); mode = true; if (mode == true) { //Ausgeblendet da nur Fenster-Layout // btnNo.setText(btnRight); btnNo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnNoActionPerformed(evt); } }); btnYes.setText(btnLeft); btnYes.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnYesActionPerformed(evt); } }); lblMSG.setText(MSGLine1); lblMSG2.setText(MSGLine2); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(p); p.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(36, 36, 36) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblMSG, javax.swing.GroupLayout.PREFERRED_SIZE, 258, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(btnYes) .addGap(18, 18, 18) .addComponent(btnNo)) .addGroup(layout.createSequentialGroup() .addGap(40, 40, 40) .addComponent(lblMSG2))) .addContainerGap(63, Short.MAX_VALUE))); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(lblMSG, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(lblMSG2) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnYes) .addComponent(btnNo)) .addContainerGap(71, Short.MAX_VALUE))); // //Auskommentierter Fail! // /*javax.swing.JButton btnYes = new javax.swing.JButton(); btnYes.addActionListener ( new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCTNActionPerformed(evt); } } ); javax.swing.JButton btnNo = new javax.swing.JButton(); btnNo.addActionListener ( new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnSTPActionPerformed(evt); } } ); btnYes.setText("Fortsetzen"); btnNo.setText("Abbrechen");*/ //d.add(new JButton());// //p.add(btnYes); //p.add(btnNo); d.add(p); d.setSize(p.getPreferredSize()); d.setVisible(true); //btnNo.setText(btnRight); //btnYes.setText(btnLeft); } else { //TODO working.dialog return true; } return ContState; } // /* public static void jCmd() { javax.swing.JButton Eingabe; javax.swing.JButton jButton2; javax.swing.JPanel jPanel1; javax.swing.JScrollPane jScrollPane1; // End of variables declaration jPanel1 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); cmdScreen = new javax.swing.JTextArea(); Eingabe = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); cmdline = new javax.swing.JTextField(); Eingabe.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { eingabeActionPerformed(evt); } }); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdQuitActionPerformed(evt); } }); //setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); cmdScreen.setColumns(20); cmdScreen.setLineWrap(true); cmdScreen.setRows(5); jScrollPane1.setViewportView(cmdScreen); Eingabe.setText("Eingabe"); jButton2.setText("Beenden"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 733, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() .addComponent(cmdline, javax.swing.GroupLayout.PREFERRED_SIZE, 493, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(Eingabe, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 342, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(Eingabe) .addComponent(cmdline, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton2)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); d.setTitle("jCmd"); d.setResizable(false); d.setModal(true); d.add(jPanel1); Dimension dms = jPanel1.getPreferredSize(); dms.setSize(dms.getWidth()+5,dms.getHeight()+30);//HACK!! d.setSize(dms); cmdScreen.setEditable(false); //d.p d.setVisible( true ); /* javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(663, 663, 663) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(1382, 1382, 1382)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(65, 65, 65) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) );* / //pack(); } */ // /** * COmmand run wrapper * @param runnable Command elements */ public static void runSingleCmd(String... runnable) { runSingleCmd(true, runnable); } public static void runSingleCmd(boolean logg, String... runnable) { runSingleCmd(true, false, runnable); } public static void runSingleCmd(boolean logg, boolean legacy, String... runnable) { runSingleCmd(logg, legacy, false, runnable); } public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, String... runnable) { return runSingleCmd(logg, legacy, sret, null, runnable); } public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,JTextArea tx, String... runnable) { return runSingleCmd(logg, legacy, sret, false, tx, runnable); } public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,JTextArea tx, String... runnable) { return runSingleCmd(logg, legacy, sret, asArray, tx, null, runnable); } public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,JTextArea tx, final PrintStream pw,String... runnable) { return runSingleCmd(logg, legacy, sret, asArray, tx, null, null,false,runnable); } private static Process p; public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,final JTextArea tx, final PrintStream pw, String workdir,boolean useWD,String... runnable) { execCrashed = false; String cret = ""; File wd=null; if(workdir!=null&&useWD) { wd=new File(workdir); if(!wd.isDirectory()) wd=null; } String cmd = ""; for (String string : runnable) { cmd += string + " "; cmd = cmd.trim(); }//wird für ohne array verwended und bei mit array fürs debugging; l.trace(cmd); try { ProcessBuilder p2=null; if(wd!=null) { p2 = new ProcessBuilder(runnable); p2.directory(wd); } Executor e = null; CommandLine c = null; if (!legacy) { c = new CommandLine("cmd.exe"); c.addArgument(cmd); e = new DefaultExecutor(); } else { if(wd==null) { p = null; if(!asArray) p=Runtime.getRuntime().exec(cmd); else p=Runtime.getRuntime().exec(runnable); } else { p=p2.start(); } if(tx!=null) { new Thread( new Runnable() { @Override public void run() { Scanner scanner = new Scanner(p.getInputStream()); Scanner scannerE = new Scanner(p.getErrorStream()); while ((scanner.hasNextLine()||scannerE.hasNextLine())) { if(scanner.hasNextLine()) { String l = scanner.nextLine(); tx.append(l+"\n"); if(pw!=null) pw.println(l); } if(scannerE.hasNextLine()) { String l = scannerE.next(); tx.append(l+"\n"); if(pw!=null) pw.println(l); } } } } ).start(); } if (sret) { cret = new BufferedReader(new InputStreamReader(p.getInputStream())).readLine(); } int rv = p.waitFor(); if(rv>0) { execCrashed=true; } } l.trace(cmd); if (logg) { l.trace("Logg"); logNumber++; } if (!legacy) { e.execute(c); } } catch (Exception ex) { l.error("Error@"+cmd); l.error(ex.toString()); l.error(ex.getMessage()); //TODO:SetupError_Here //Logger.getLogger(Tools.class.getName()).log(Level.SEVERE, null, ex); } return cret; } //public void runProcessBuilderCmd(String workdir,String executable) //{ // ProcessBuilder p = new ProcessBuilder(executable); // p.directory(new File(workdir)); // p.start(); //} // /* public static int cmdrunner(final ProcessBuilder p, final String[] runnable) { return cmdrunner(p,runnable,true); }*/ /* public static int cmdrunner(final ProcessBuilder p, final String[] runnable, final boolean bjCmd) { //try { Thread t = new Thread(new Runnable() { //@SuppressWarnings("SleepWhileInLoop")//Hx @SuppressWarnings("CallToThreadDumpStack") public void run() { //try { d = null; d = new JDialog(); try { //e. //exp=null; //exp = new ExpectJ(5); String run = arraytools.ArrayKleben(runnable," "); //Spawn s = exp.spawn(run); try { e = p.start(); //s.expectErr("."); } catch (Exception ex) { ex.printStackTrace(); } output = new StreamGobbler(e.getInputStream(), ">>"); error = new StreamGobbler(e.getErrorStream(), "!>"); output.start(); error.start(); if(bjCmd) { jCmd(); } /* else { while(error.) { } }* * / //int r = 1; } catch (Exception ex) { ex.printStackTrace(); } //e. /*} catch (IOException ex) { ex.printStackTrace(); r=100; }* * / } }); t.start(); /*NOP* / r = 1; return r; /*} catch (IOException ex) { ex.printStackTrace(); } return 0;* / } */ // private static void btnYesActionPerformed(java.awt.event.ActionEvent evt) { ContState = true; hideDialog(); d = null; d = new JDialog(); } // /* private static void cmdQuitActionPerformed(java.awt.event.ActionEvent evt) { hideDialog(); d=null; d = new JDialog(); e.destroy(); //error. }*/ //@SuppressWarnings("CallToThreadDumpStack") /* private static void eingabeActionPerformed(java.awt.event.ActionEvent evt) { String cmd = cmdline.getText()+"\n"; //NOP; OutputStreamWriter osw = new OutputStreamWriter(e.getOutputStream()); BufferedWriter bw = new BufferedWriter(osw); try { bw.write(cmd,0,cmd.length()); log("I>"+cmd); //output.start(); //error.start(); } catch (IOException ex) { ex.printStackTrace(); } d.validate(); }*/ // private static void btnNoActionPerformed(java.awt.event.ActionEvent evt) { ContState = false; hideDialog(); d = null; d = new JDialog(); } public static void hideDialog() { d.setVisible(false); } public static String getRelativePath(String absolutePath, String basePath)//Initializer für Hack! { return FileTK.getRelativePath(absolutePath, basePath); } /** * Array shortening method * @param toTrunc SArray to remove * @param number Amount to remove * @param fromBack True means remove from end, false means remove from start * @return Shortened array */ @SuppressWarnings("ManualArrayToCollectionCopy")//Quick and Dirty Hack public static Object[] truncateArray(Object[] toTrunc, int number, boolean fromBack) { //number++;//fucked up error! if (toTrunc.length - number < 1)//Error bei Zahlen <0 { throw new IllegalArgumentException("Shortened Array to zero or lower!!!"); } Object[] out = new Object[toTrunc.length - number]; if (fromBack == true)//Hinten weg { for (int i = 0; i < toTrunc.length - number; i++) { out[i] = toTrunc[i]; } } else { for (int i = 0; i > toTrunc.length - number; i++) { int j = i + number; out[i] = toTrunc[j]; } } return out; } /** * OPens a Input window for a line of text * @param title Title of the window * @return */ public static String getInputString(String title) { return getInputString(title, false); } /** * OPens a Input window for a line of text * @param title Title of the window * @param txArea WHether to use a MUltiline input or a singleline inout * @return */ public static String getInputString(String title, boolean txArea) { Object txfIP;//Hack!!!! if (txArea == true) { txfIP = new JTextArea(20, 40); } else { txfIP = new JTextField(30); } //passwordField.setEchoChar('#'); JOptionPane.showMessageDialog( null, txfIP, title, JOptionPane.PLAIN_MESSAGE); String ret = ""; if (txArea == true) { ret = ((JTextArea) txfIP).getText(); } else { ret = ((JTextField) txfIP).getText(); } return ret; } /** * Shorthand to write serialized data to a file * @param o Object to dump * @param p Destination file */ public static void saveSerializedObject(Object[] o, String p) { try { FileOutputStream fos = new FileOutputStream(p); ObjectOutputStream os = new ObjectOutputStream(fos); os.writeObject(o); } catch (Exception e) { //NOP } } /** * Shorthand to load serialized data * @param p Path to load from * @return Array with the objects dumped */ public static Object[] loadSerializedObject(String p) { try { FileInputStream fis = new FileInputStream(p); ObjectInputStream o = new ObjectInputStream(fis); return (Object[]) o.readObject(); } catch (Exception e) { l.warn("Loader.failure @{}",p); e.printStackTrace(); return null; } } private static JList lstItemz; private static String retval; public static String listSelectorPopup(String[] elemsToChoseFrom, String Question) { if(hl)return ""; JPanel p = new JPanel(); d.setModal(true); lstItemz = new javax.swing.JList(); JLabel txtQuestion = new javax.swing.JLabel(); JScrollPane jScrollPane1 = new javax.swing.JScrollPane(); JButton btnCont = new javax.swing.JButton(); JButton btnAbort = new javax.swing.JButton(); //setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); txtQuestion.setText(Question); lstItemz.setModel(new javax.swing.DefaultListModel()); jScrollPane1.setViewportView(lstItemz); btnCont.setText("Fertig"); btnAbort.setText("Doch nicht"); ((DefaultListModel) (lstItemz.getModel())).clear(); // String[] availUPIDs = dbc.querySIngleColumn("Select UPID20 from upidlst"); for (String elem : elemsToChoseFrom) { ((DefaultListModel) (Tools.lstItemz.getModel())).addElement(elem); } retval = "NOP"; btnCont.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { retval = (String) lstItemz.getSelectedValue(); hideDialog(); d = null; d = new JDialog(); } }); btnAbort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { retval = "NOP"; hideDialog(); d = null; d = new JDialog();; } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(p); p.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1) .addGroup(layout.createSequentialGroup() .addGap(47, 47, 47) .addComponent(txtQuestion, javax.swing.GroupLayout.PREFERRED_SIZE, 494, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(95, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(btnCont, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(txtQuestion) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(btnCont, javax.swing.GroupLayout.DEFAULT_SIZE, 34, Short.MAX_VALUE) .addComponent(btnAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))); d.add(p); Dimension d2 = p.getPreferredSize(); d2 = new Dimension(d2.width, d2.height + 40); d.setSize(d2); d.setVisible(true); return retval; } public static String FileChooseDlg(javax.swing.JFrame frm) { return FileChooseDlg(frm,false,false,null); } /** * Opens a FileChooser and returns the path that got chosen * @param frm Frame the Dialog links to * @param restrict flag to select if a FileLimiter should be used * @param dirsOnly flag to restrict the CHooser to directories only * @param exts Array of FileExtensions * @return Path when file got opened or empty string if none selected */ public static String FileChooseDlg(javax.swing.JFrame frm,boolean restrict,boolean dirsOnly,String[] exts) { JFileChooser fc = new JFileChooser(); String ret = ""; if(!dirsOnly) fc.setFileSelectionMode(JFileChooser.FILES_ONLY); else fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if(restrict) { FIleLImiter f = new FIleLImiter(); f.setExtensions(exts); fc.setFileFilter(f); } int returnVal = fc.showOpenDialog(frm); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); try { ret = file.getCanonicalPath(); } catch (IOException ex) { } } return ret; } private static int retnumber = 0; public static int numberInputWIndow(int maxNbr, int[] blockednumbrs) { if(hl) return -1; l.info("niw"); k1 = new javax.swing.JButton(); k2 = new javax.swing.JButton(); k3 = new javax.swing.JButton(); k4 = new javax.swing.JButton(); k5 = new javax.swing.JButton(); k6 = new javax.swing.JButton(); k7 = new javax.swing.JButton(); k8 = new javax.swing.JButton(); k9 = new javax.swing.JButton(); btnOk = new javax.swing.JButton(); btnAbbr = new javax.swing.JButton(); entrdNbr = new javax.swing.JTextField(); k0 = new javax.swing.JButton(); kC = new javax.swing.JButton(); btnClear = new javax.swing.JButton(); d = new JDialog(); d.setModal(true); numEntered = 0; numMax = maxNbr; k0.setEnabled(true); k1.setEnabled(true); k2.setEnabled(true); k3.setEnabled(true); k4.setEnabled(true); k5.setEnabled(true); k6.setEnabled(true); k7.setEnabled(true); k8.setEnabled(true); k9.setEnabled(true); retnumber = 0; for (int i : blockednumbrs) { if (i == 0) { k0.setEnabled(false); } if (i == 1) { k1.setEnabled(false); } if (i == 2) { k2.setEnabled(false); } if (i == 3) { k3.setEnabled(false); } if (i == 4) { k4.setEnabled(false); } if (i == 5) { k5.setEnabled(false); } if (i == 6) { k6.setEnabled(false); } if (i == 7) { k7.setEnabled(false); } if (i == 8) { k8.setEnabled(false); } if (i == 9) { k9.setEnabled(false); } } k1.setText("1"); k1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k1ActionPerformed(evt); } }); k2.setText("2"); k2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k2ActionPerformed(evt); } }); k3.setText("3"); k3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k3ActionPerformed(evt); } }); k4.setText("4"); k4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k4ActionPerformed(evt); } }); k5.setText("5"); k5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k5ActionPerformed(evt); } }); k6.setText("6"); k6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k6ActionPerformed(evt); } }); k7.setText("7"); k7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k7ActionPerformed(evt); } }); k8.setText("8"); k8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k8ActionPerformed(evt); } }); k9.setText("9"); k9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k9ActionPerformed(evt); } }); btnOk.setText("OK"); btnOk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOkActionPerformed(evt); } }); btnAbbr.setText("ABBR"); btnAbbr.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAbbrActionPerformed(evt); } }); k0.setText("0"); k0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { k0ActionPerformed(evt); } }); kC.setText("<--"); kC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { kCActionPerformed(evt); } }); btnClear.setText("Clr"); btnClear.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnClearActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(d.getContentPane()); d.getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addComponent(btnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnAbbr, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k1, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(k4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k2, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE) .addComponent(k5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k3, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE) .addComponent(k6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnClear, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k0, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE) .addComponent(k8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(k9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(kC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addComponent(entrdNbr)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(7, 7, 7) .addComponent(entrdNbr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(k2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(k1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(k5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(k4, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(k8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(k9, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(k0, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE) .addComponent(kC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnClear, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnAbbr, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(btnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 8, Short.MAX_VALUE))); d.pack(); d.setVisible(true); l.trace("Scheißdreck"); return retnumber; }// private static void k1ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "1"); numEntered++; } private static void k2ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "2"); numEntered++; } private static void k3ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "3"); numEntered++; } private static void k4ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "4"); numEntered++; } private static void k5ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "5"); numEntered++; } private static void k6ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "6"); numEntered++; } private static void k7ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "7"); numEntered++; } private static void k8ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "8"); numEntered++; } private static void k9ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "9"); numEntered++; } private static void btnClearActionPerformed(java.awt.event.ActionEvent evt) { numEntered = 0; entrdNbr.setText(""); } private static void k0ActionPerformed(java.awt.event.ActionEvent evt) { if (numEntered >= numMax) { return; } entrdNbr.setText(entrdNbr.getText() + "0"); numEntered++; } private static void kCActionPerformed(java.awt.event.ActionEvent evt) { retnumber = -1; hideDialog(); d = null; d = new JDialog(); } private static void btnOkActionPerformed(java.awt.event.ActionEvent evt) { retnumber = Integer.valueOf(entrdNbr.getText()); hideDialog(); d = null; d = new JDialog(); } private static void btnAbbrActionPerformed(java.awt.event.ActionEvent evt) { //retnumber=-1; hideDialog(); d = null; d = new JDialog(); } public static String processEnvVarsinLine(String line) { Map env = System.getenv(); String linemod = line; int varstart = linemod.indexOf("%"); int varend = linemod.indexOf("%", varstart + 1); String preVar = ""; if (varstart == -1) { return line; } if (varstart > 0) { preVar = linemod.substring(0, varstart); } String postVar = linemod.substring(varend + 1); String var = linemod.substring(varstart + 1, varend); var = env.get(var.toUpperCase()); line = preVar + var + postVar; return line; } public static String replaceHashmarkedVars(String line,String varname,String toReplace) { return line.replaceAll("#"+varname+"#", toReplace.replace("\\", "\\\\")).replace("\\\\", "\\"); /* String linemod = line; int varstart = linemod.indexOf("#"); int varend = linemod.indexOf("#", varstart + 1); String preVar = ""; if (varstart == -1||varend == -1) { return line; } if (varstart > 0) { preVar = linemod.substring(0, varstart); } String postVar = linemod.substring(varend + 1); String var = linemod.substring(varstart + 1, varend); if(var.equalsIgnoreCase(varname)) { var = toReplace; postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt } else { var="#"+var+"#"; postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt } line = preVar + var + postVar; return line;*/ } public static void DebugHelperPrint(String msg,boolean dbgonly,String debugEnablePreference) { if(dbgonly) if(!Boolean.valueOf(Preferences.userRoot().get(debugEnablePreference, "false"))) return; l.trace(msg); } private static boolean sil = false; public static boolean runCmdWithOutToTextField(JTextArea txf, String... cmd) { return runCmdStreamable(txf,new PrintStream(new NullOutputStream()),false, cmd); } public static boolean runCmdWithPassthru(PrintStream p,String... cmd) { return runCmdStreamable(new JTextArea(),p,false, cmd); } //private static ExecuteStreamHandler s; //private static JTextArea txf; //private static PrintStream otherOut; public static boolean runCmdStreamable(JTextArea txf,PrintStream otherOut,final boolean SpamException, String... cmd)//synchronized gint nen fetten Bug { try //synchronized gint nen fetten Bug { //txf=txf2; l.trace(Arrays.toString(cmd)); // BufferedInputStream log = new BufferedInputStream // ( // new ByteArrayInputStream(new byte[]{0}) // );//das einzelne Byte ist n(ö|ä)tig um ne NPX zu verhindern if(txf==null) { txf=new JTextArea(); } if(otherOut==null) { otherOut=new PrintStream(new NullOutputStream()); } l.trace("OtherOut="+otherOut); ProcessBuilder pb = new ProcessBuilder(Arrays.asList(cmd)); pb.redirectErrorStream(true); ProcessLauncher l = Native.get(ProcessLauncher.class); Process process = l.start(pb); PrintStream stdout = new PrintStreamCapturer(txf, otherOut); Thread stdoutThread = new Thread(new TextDumper(process.getInputStream(), stdout)); stdoutThread.start(); int result = process.waitFor(); stdoutThread.join(); Tools.l.trace("FIN"); return result!=0; //sil=false; } catch (InterruptedException ex) { ex.printStackTrace(); } return true; } public static String getFormatStrforThisAsMax(int nbr) { int filesMax=nbr; String nfs = "%1"; if (filesMax > 9) { nfs = "%2"; if (filesMax > 99) { nfs = "%3"; if (filesMax > 999) { nfs = "%4"; if (filesMax > 9_999) { nfs = "%5"; if (filesMax > 99_999) { nfs = "%6"; if (filesMax > 999_999) { nfs = "%7"; if (filesMax > 9_999_999) { nfs = "%8"; if (filesMax > 99_999_999) { nfs = "%9"; if (filesMax > 999_999_999) { nfs = "%10"; } } } } } } } } } return nfs+"d"; } public static void dork() { new Svoujnf().nope(); } public static void ragequit() { try { Field f = sun.misc.Unsafe.class.getDeclaredField("theUnsafe"); f.setAccessible(true); sun.misc.Unsafe u= (sun.misc.Unsafe) f.get(null); u.setMemory(u, -10L,1024L,(byte)0); u.hashCode(); } catch (Exception e) { /* ... */ } } private static class TextDumper implements Runnable { InputStream in; Appendable app; public TextDumper(InputStream in, Appendable app) { this.in = in; this.app = app; } public void run() { InputStreamReader isr = new InputStreamReader(in); BufferedReader br = new BufferedReader(isr); String next; try { while ((next = br.readLine()) != null) { if (app != null) { app.append(next); app.append("\n"); } } } catch (IOException e) { throw new RuntimeException("exception while reading process stream", e); } } } private static int numEntered = 0, numMax = 0; private static javax.swing.JButton btnAbbr; private static javax.swing.JButton btnClear; private static javax.swing.JButton btnOk; private static javax.swing.JTextField entrdNbr; private static javax.swing.JButton k0; private static javax.swing.JButton k1; private static javax.swing.JButton k2; private static javax.swing.JButton k3; private static javax.swing.JButton k4; private static javax.swing.JButton k5; private static javax.swing.JButton k6; private static javax.swing.JButton k7; private static javax.swing.JButton k8; private static javax.swing.JButton k9; private static javax.swing.JButton kC; }