Java2HTML改造手記(3) (轉)

amyz發表於2007-11-13
Java2HTML改造手記(3) (轉)[@more@]

Ja 2HTML改造手記(3)

:namespace prefix = o ns = "urn:schemas--com::office" />

先重點看這個:

public static void main(String args[])

{

  ……………….

  java2html = new Java2HTML();

  o01 = new O01(args);

  ……………….

}

引數又跳轉到o01上了.那麼我們繼續,沒辦法,逆向工程是需要耐心的.

// File Name:  O01.java

package com.java2html;

import java.io.File;

import java.io.PrintStream;

import java.util.Vector;

// Referenced classes of package com.java2html:

//  BadOptionException, Java2HTML, JavaDoc, O07

public class O01

{

  private String O02[];

  private boolean O03[];

  O01(String as[])

  {

  O02 = as;

  O03 = new boolean[as.length];

  }

  boolean O04(Java2HTML java2html)

  throws BadOptionException

  {

  if(O02.length == 0 || O06(new String[] {

  "help", "h", "?", "/?"

}))

  {

  System.out.println(O07.O08);

  return false;

  }

  String as[] = O010(new String[] {

  "name", "n"

  }, false, 1);

  if(as.length == 1)

   {

  java2html.setTitle(as[0]);

  }

  java2html.setFooter(O06(new String[] {

  "nofooter", "nf"

  }));

  java2html.setFooter(O06(new String[] {

  "noheader", "nh"

  }));

  java2html.setSimple(O06(new String[] {

  "simple", "s"

  }));

  int ai[] = O012(new String[] {

  "margin", "m"

  }, false, 1);

  if(ai.length == 1)

  {

  java2html.setMarginSize(ai[0]);

  }

  int ai1[] = O012(new String[] {

  "tabs", "t"

  }, false, 1);

  if(ai1.length == 1)

  {

  java2html.setTabSize(ai1[0]);

  }

  String as1[] = O010(new String[] {

  "destination", "d"

  }, false, 1);

  if(as1.length == 1)

  {

  java2html.setDestination(as1[0]);

  }

  String as2[] = O010(new String[] {

  "javasource", "js"

  }, false, -1);

  if(as2.length > 0)

  {

  java2html.setJavaDirectorySource(as2);

  }

  JavaDoc ajavadoc[] = O017(new String[] {

  "javadoc", "jd"

  });

  if(ajavadoc.length > 0)

  {

  java2html.setJavaDoc(ajavadoc);

  }

  O018();

  return true;

  }

  private boolean O06(String as[])

  throws BadOptionException

  {

  int i = 0;

  int j = 0;

  boolean flag = false;

  for(; i < O02.length; i++)

  {

  for(int k = 0; k < as.length; k++)

  {

  if(!O02[i].equalsIgnoreCase("-" + as[k]))

  {

  continue;

  }

  O03[i] = true;

  if(j >= 1)

  {

  throw new BadOptionException(as[0] + " should only be set once");

  }

  j++;

  flag = true;

  break;

  }

  }

  return flag;

  }

  private String[] O010(String as[], boolean flag, int i)

  throws BadOptionException

  {

  int j = 0;

  int k = 0;

  Vector vector = new Vector();

  for(; j < O02.length; j++)

  {

  for(int l = 0; l < as.length; l++)

  {

  if(!O02[j].equalsIgnoreCase("-" + as[l]))

  {

  continue;

  }

  O03[j] = true;

  j++;

  if(k == i)

  {

  throw new BadOptionException(as[0] + " should only be set " + i + " time(s)");

  }

  if(j >= O02.length)

  {

  throw new BadOptionException("Value not set for " + as[0]);

  }

  O03[j] = true;

  vector.addElement(O02[j]);

   k++;

  break;

  }

  }

  if(flag && k == 0)

  {

  throw new BadOptionException(as[0] + " needs to be set");

  } else

  {

  return O026(vector);

  }

  }

  private int[] O012(String as[], boolean flag, int i)

  throws BadOptionException

  {

  int j = 0;

  int k = 0;

  Vector vector = new Vector();

  for(; j < O02.length; j++)

  {

  for(int l = 0; l < as.length; l++)

  {

  if(!O02[j].equalsIgnoreCase("-" + as[l]))

  {

  continue;

  }

  O03[j] = true;

  j++;

  if(k == i)

  {

   throw new BadOptionException(as[0] + " should only be set " + i + " time(s)");

  }

  if(j >= O02.length)

  {

  throw new BadOptionException("Value not set for " + as[0]);

  }

   O03[j] = true;

  vector.addElement(O02[j]);

  k++;

  break;

  }

  }

  if(flag && k == 0)

  {

  throw new BadOptionException(as[0] + " needs to be set");

  }

  int ai[] = null;

  try

  {

  ai = O028(vector);

  }

  catch(Exception _ex)

  {

  throw new BadOptionException(as[0] + " must be a number");

  }

  return ai;

  }

  public JavaDoc[] O017(String as[])

  throws BadOptionException

  {

  int i = 0;

  int j = 0;

  Vector vector = new Vector();

  for(; i < O02.length; i++)

  {

  for(int k = 0; k < as.length; k++)

  {

  if(!O02[i].equalsIgnoreCase("-" + as[k]))

  {

  continue;

  }

  O03[i] = true;

  if(++i >= O02.length)

  {

  throw new BadOptionException("Value not set for " + as[0]);

  }

  O03[i] = true;

  JavaDoc javadoc = null;

  File file = new File(O02[i]);

  String s = null;

  if(i + 1 < O02.length && !O02[i + 1].startsWith("-"))

  {

  i++;

  if(!O02[i].startsWith("http://"))

  {

  throw new BadOptionException("Second Parameter of -jd/-javadoc option must start with 'http://'");

   }

  s = O02[i];

  O03[i] = true;

  }

  if(s != null)

  {

  javadoc = new JavaDoc(file, s);

  } else

  {

  javadoc = new JavaDoc(file);

  }

  vector.addElement(javadoc);

  j++;

  break;

  }

  }

  JavaDoc ajavadoc[] = new JavaDoc[vector.size()];

  for(int l = 0; l < vector.size(); l++)

  {

  ajavadoc[l] = (JavaDoc)vector.elementAt(l);

  }

  return ajavadoc;

  }

  private String[] O026(Vector vector)

  {

  String as[] = new String[vector.size()];

  for(int i = 0; i < vector.size(); i++)

  {

  as[i] = (String)vector.elementAt(i);

  }

  return as;

  }

  private int[] O028(Vector vector)

  {

  int ai[] = new int[vector.size()];

  for(int i = 0; i < vector.size(); i++)

  {

  ai[i] = Integer.parseInt((String)vector.elementAt(i));

  }

  return ai;

  }

  public void O018()

  throws BadOptionException

  {

  for(int i = 0; i < O03.length; i++)

  {

  if(!O03[i])

  {

   throw new BadOptionException("Unkown Argument :" + O02[i]);

  }

  }

  }

}

找到這裡:

O01(String as[])

{

O02 = as;

  O03 = new boolean[as.length];

}

看來這裡沒有作什麼,那麼我們回到java2html.java繼續往下看:

public static void main(String args[])

{

…………………..

java2html = new Java2HTML();

  o01 = new O01(args);

  //這裡就是了

  if(!o01.O04(java2html))

  {

    return;

  }

  ………………….

}

原來了o01.O04方法.看看:

boolean O04(Java2HTML java2html)

  throws BadOptionException

  {

  if(O02.length == 0 || O06(new String[] {

  "help", "h", "?", "/?"

}))

  {

  System.out.println(O07.O08);

  return false;

  }

  String as[] = O010(new String[] {

  "name", "n"

  }, false, 1);

  if(as.length == 1)

  {

  java2html.setTitle(as[0]);

  }

  java2html.setFooter(O06(new String[] {

  "nofooter", "nf"

  }));

  java2html.setFooter(O06(new String[] {

  "noheader", "nh"

  }));

  java2html.setSimple(O06(new String[] {

  "simple", "s"

  }));

  int ai[] = O012(new String[] {

  "margin", "m"

  }, false, 1);

  if(ai.length == 1)

  {

  java2html.setMarginSize(ai[0]);

  }

  int ai1[] = O012(new String[] {

  "tabs", "t"

  }, false, 1);

  if(ai1.length == 1)

  {

  java2html.setTabSize(ai1[0]);

  }

  String as1[] = O010(new String[] {

  "destination", "d"

  }, false, 1);

  if(as1.length == 1)

  {

  java2html.setDestination(as1[0]);

  }

   String as2[] = O010(new String[] {

  "javasource", "js"

  }, false, -1);

  if(as2.length > 0)

  {

  java2html.setJavaDirectorySource(as2);

  }

  JavaDoc ajavadoc[] = O017(new String[] {

  "javadoc", "jd"

  });

  if(ajavadoc.length > 0)

  {

  java2html.setJavaDoc(ajavadoc);

  }

  O018();

  return true;

  }

欲知後事如何,且聽下回分解.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982061/,如需轉載,請註明出處,否則將追究法律責任。

相關文章