From 4fa719c27275bed42375b46b30d8b48d7b5ef717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Sat, 19 Jan 2013 10:43:00 +0100 Subject: [PATCH] better update system better renaming identifiers (Issue 25) code formatting --- trunk/src/com/jpexs/asdec/Main.java | 35 +++--- trunk/src/com/jpexs/asdec/abc/ABC.java | 112 +++++++++++++----- .../src/com/jpexs/asdec/abc/gui/ABCPanel.java | 4 +- trunk/src/com/jpexs/asdec/gui/MainFrame.java | 27 +++-- 4 files changed, 121 insertions(+), 57 deletions(-) diff --git a/trunk/src/com/jpexs/asdec/Main.java b/trunk/src/com/jpexs/asdec/Main.java index 823e2fe26..cc03917fa 100644 --- a/trunk/src/com/jpexs/asdec/Main.java +++ b/trunk/src/com/jpexs/asdec/Main.java @@ -141,21 +141,22 @@ public class Main { public static void startWork(String name) { startWork(name, -1); } - public static void startWork(String name,int percent) { + + public static void startWork(String name, int percent) { working = true; if (mainFrame != null) { mainFrame.setStatus(name); - if(percent==-1){ + if (percent == -1) { mainFrame.hidePercent(); - }else{ + } else { mainFrame.setPercent(percent); } } if (loadingDialog != null) { loadingDialog.setDetail(name); - if(percent==-1){ + if (percent == -1) { loadingDialog.hidePercent(); - }else{ + } else { loadingDialog.setPercent(percent); } } @@ -180,10 +181,9 @@ public class Main { FileInputStream fis = new FileInputStream(file); InputStream bis = new BufferedInputStream(fis); SWF locswf = new SWF(bis, new PercentListener() { - @Override public void percent(int p) { - startWork("Reading SWF",p); + startWork("Reading SWF", p); } }); locswf.addEventListener(new EventListener() { @@ -312,7 +312,7 @@ public class Main { */ public static void updateLicenseInDir(File dir) { int defaultStartYear = 2010; - int defaultFinalYear = 2011; + int defaultFinalYear = 2013; String defaultAuthor = "JPEXS"; String defaultYearStr = "" + defaultStartYear; if (defaultFinalYear != defaultStartYear) { @@ -746,18 +746,21 @@ public class Main { Node nod = contents.item(i); String cont = nod.getTextContent().trim(); String parts[] = cont.split("\n"); - boolean featured = false; + boolean isUpdate = false; for (String part : parts) { - if (part.trim().equals("Featured")) { - featured = true; + if (part.trim().equals("Update")) { + isUpdate = true; break; } } - if ((parts.length > 4) && (featured)) { + if ((parts.length > 4) && (isUpdate)) { String downloadName = parts[1]; String link = parts[parts.length - 2]; - if (downloadName.startsWith(shortApplicationName + " version ")) { - String downVersion = downloadName.substring((shortApplicationName + " version ").length()); + if (isUpdate) { + String downVersion = "NEW"; + if (downloadName.startsWith(shortApplicationName + " version ")) { + downVersion = downloadName.substring((shortApplicationName + " version ").length()); + } if (link.startsWith(" deobfuscated = new HashMap(); + private Random rnd = new Random(); + private final int DEFAULT_FOO_SIZE = 10; + + private String fooString(String orig, boolean firstUppercase, int rndSize) { + boolean exists; + String ret; + loopfoo: + do { + exists = false; + int len = 3+rnd.nextInt(rndSize-3); + ret=""; + for(int i=0;i 127) { @@ -589,36 +653,27 @@ public class ABC { } } } - Pattern pat = Pattern.compile("^[" + Pattern.quote(validFirstCharacters) + "]" + "[" + Pattern.quote(validFirstCharacters + validNextCharacters + validNsCharacters) + "]*$"); + Pattern pat = Pattern.compile("^([" + Pattern.quote(validFirstCharacters) + "]" + "[" + Pattern.quote(validFirstCharacters + validNextCharacters + validNsCharacters) + "]*)*$"); if (!pat.matcher(s).matches()) { isValid = false; } if (!isValid) { - if (isReserved) { - constants.constant_string[strIndex] = "name_" + s.replace(" ", "_"); - } else { - unknownCount++; - constants.constant_string[strIndex] = "_name" + unknownCount; - } + constants.constant_string[strIndex] = fooString(constants.constant_string[strIndex], false, DEFAULT_FOO_SIZE); } return !isValid; } - public boolean deobfuscateName(int strIndex) { + public boolean deobfuscateName(int strIndex, boolean firstUppercase) { if (strIndex <= 0) { return false; } String s = constants.constant_string[strIndex]; boolean isValid = true; - boolean isReserved = false; - for (String rw : reservedWords) { - if (rw.equals(s.trim())) { - isValid = false; - isReserved = true; - break; - } + if (isReserved(s)) { + isValid = false; } + Pattern pat = Pattern.compile("^[" + Pattern.quote(validFirstCharacters) + "]" + "[" + Pattern.quote(validFirstCharacters + validNextCharacters) + "]*$"); if (!pat.matcher(s).matches()) { isValid = false; @@ -633,12 +688,7 @@ public class ABC { } if (!isValid) { - if (isReserved) { - constants.constant_string[strIndex] = "name_" + s.replace(" ", "_"); - } else { - unknownCount++; - constants.constant_string[strIndex] = "_name" + unknownCount; - } + constants.constant_string[strIndex] = fooString(constants.constant_string[strIndex], firstUppercase, DEFAULT_FOO_SIZE); } return !isValid; } diff --git a/trunk/src/com/jpexs/asdec/abc/gui/ABCPanel.java b/trunk/src/com/jpexs/asdec/abc/gui/ABCPanel.java index 86c8fb234..c150eeaed 100644 --- a/trunk/src/com/jpexs/asdec/abc/gui/ABCPanel.java +++ b/trunk/src/com/jpexs/asdec/abc/gui/ABCPanel.java @@ -312,9 +312,7 @@ public class ABCPanel extends JPanel implements ItemListener, ActionListener { constantTypeList.addItemListener(this); panConstants.add(constantTypeList, BorderLayout.NORTH); panConstants.add(new JScrollPane(constantTable), BorderLayout.CENTER); - tabbedPane.addTab("Constants", panConstants); - - + tabbedPane.addTab("Constants", panConstants); } public void doFilter() { diff --git a/trunk/src/com/jpexs/asdec/gui/MainFrame.java b/trunk/src/com/jpexs/asdec/gui/MainFrame.java index 7272af472..de41cdcf1 100644 --- a/trunk/src/com/jpexs/asdec/gui/MainFrame.java +++ b/trunk/src/com/jpexs/asdec/gui/MainFrame.java @@ -59,6 +59,7 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JTabbedPane; +import javax.swing.SwingWorker; import javax.swing.border.BevelBorder; /** @@ -687,14 +688,26 @@ public class MainFrame extends JFrame implements ActionListener { } if (e.getActionCommand().equals("RENAMEIDENTIFIERS")) { if (JOptionPane.showConfirmDialog(null, "Following procedure can damage SWF file which can be then unplayable.\r\nUSE IT ON YOUR OWN RISK. Do you want to continue?", "Warning", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.OK_OPTION) { - int pocet = 0; + Main.startWork("Renaming identifiers..."); - for (DoABCTag tag : abcPanel.list) { - pocet += tag.abc.deobfuscateIdentifiers(); - } - JOptionPane.showMessageDialog(null, "Identifiers renamed: " + pocet); - abcPanel.reload(); - Main.stopWork(); + new SwingWorker(){ + + @Override + protected Object doInBackground() throws Exception { + int cnt = 0; + for (DoABCTag tag : abcPanel.list) { + cnt += tag.abc.deobfuscateIdentifiers(); + } + Main.stopWork(); + JOptionPane.showMessageDialog(null, "Identifiers renamed: " + cnt); + abcPanel.reload(); + return true; + } + + + }.execute(); + + } }