Lcr-3

    技术2022-05-20  26

    LogDAO.java

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    package

     

     

    information.sh.lp.model;

     

    import

     

     

    information.sh.lp.infoBean.ContextInfo;

    import

     

     

    information.sh.lp.infoBean.Log;

    import

     

     

    information.sh.lp.infoBean.LogFilter;

    import

     

     

    information.sh.lp.infoBean.Position;

    import

     

     

    information.sh.lp.util.IOUtil;

    import

     

     

    information.sh.lp.util.ParseString;

     

    import

     

     

    java.io.BufferedReader;

    import

     

     

    java.io.File;

    import

     

     

    java.io.FileInputStream;

    import

     

     

    java.io.InputStreamReader;

    import

     

     

    java.util.ArrayList;

    import

     

     

    java.util.Collections;

    import

     

     

    java.util.Comparator;

    import

     

     

    java.util.Iterator;

    import

     

     

    java.util.regex.Matcher;

    import

     

     

    java.util.regex.Pattern;

     

    /**

    *

    *

     

     

    @author

    Li,

    Chengri

    *

    */

    public

     

     

    class

    LogDAO {

     

     

    /**

    *

    *

     

     

    @param

    fitler

    *

     

     

    @return

    * Describe: According to the 'filter' get read logs form log files

    */

     

     

    public

    ArrayList<Log> queryLog(LogFilter fitler) {

    ArrayList<Position> positions=IOUtil.readRoughPosition(fitler.getStartTime(),fitler.getEndTime(),fitler.getPjName());

    ArrayList<Log> logs =

     

    new

    ArrayList<Log>();

    ArrayList<Log> fileLogs;

    Position position;

     

     

    if (positions != null

    ) {

    Iterator itPo = positions.iterator();

     

     

    while

    (itPo.hasNext()) {

    position = (Position) itPo.next();

    fileLogs =

     

    this

    .readLog(position, fitler);

     

     

    if (fileLogs != null

    && !fileLogs.isEmpty()) {

    logs.addAll(fileLogs);

    }

    }

     

     

    if

    (logs.isEmpty()){

     

     

    return null

    ;

    }

    }

     

    else

    {

     

     

    return null

    ;

    }

     

     

    if(fitler.getOrderBy().equals("time"

    )){

    sortLogByTime(logs);

    }

     

     

    else if(fitler.getOrderBy().equals("level"

    )){

    sortLogByLevel(logs);

    }

     

     

    return

    logs;

    }

     

     

    /**

    *

    *

     

     

    @param

    Position Marks the logs` file name and line number

    *

     

     

    @param

    Filter Save the information which user requires

    *

     

     

    @return

    The logs which meet the requirement.

    */

     

     

    public

    ArrayList<Log> readLog(Position position,LogFilter filter) {

    File file =

     

    new

    File(position.getFile());

    ArrayList<Log> logs =

     

    new

    ArrayList<Log>();

     

     

    int

    start_line = position.getStart_line();

     

     

    int

    currLine=1;

    StringBuffer block =

     

    new

    StringBuffer();

    String line=

     

    ""

    ;

    Pattern p = Pattern.compile(

     

    "//d{4}-//d{2}-//d{2}//s//d{2}://d{2}://d{2}"

    );

    Matcher m;

     

     

    boolean matched = false

    ;

     

     

    try

    {

    BufferedReader br =

     

    new BufferedReader(new

    InputStreamReader(

     

     

    new

    FileInputStream(file)));

     

     

    while ((line=br.readLine())!=null

    &&currLine<= position.getEnd_line()) {

    m = p.matcher(line);

    matched = m.find();

     

     

    if

    (currLine<start_line){

    }

     

     

    else if

    (currLine == position.getStart_line()) {

    block.append(line);

    start_line = currLine;

    }

     

    else if

    (matched) {

    Log log = ParseString.stringToLog(block.toString(),ContextInfo.

     

    LOG_PROPER_SPLITER

    );

    log.setFile(position.getFile());

    log.setStart_line(start_line);

    log.setEnd_line(currLine - 1);

     

     

    if

    (filter.filt(log)) {

    logs.add(log);

    }

    block =

     

    new

    StringBuffer(line);

    start_line = currLine;

    }

     

    else

    {

    block.append(

     

    "/n"

    + line);

    }

    currLine++;

    }

    Log log = ParseString.stringToLog(block.toString(),ContextInfo.

     

    LOG_PROPER_SPLITER

    );

    log.setFile(position.getFile());

    log.setStart_line(start_line);

    log.setEnd_line(currLine - 1);

     

     

    if

    (filter.filt(log)) {

     

     

    if

    ((currLine - 1)!=position.getStart_line())

    logs.add(log);

    }

    }

     

    catch

    (Exception e) {

     

     

    return null

    ;

    }

     

     

    return

    logs;

    }

     

     

    /**

    *

    *

     

     

    @param

    logs The logs which need to be ordered by level

    *

     

     

    @return

    */

     

     

    public

    ArrayList<Log> sortLogByLevel(ArrayList<Log> logs){

    ArrayList<Log> newLogs=

     

    new

    ArrayList<Log>();

    ArrayList<Log> errorLevel=

     

    new

    ArrayList<Log>();

    ArrayList<Log> warnLevel=

     

    new

    ArrayList<Log>();

    ArrayList<Log> debugLevel=

     

    new

    ArrayList<Log>();

    ArrayList<Log> infoLevel=

     

    new

    ArrayList<Log>();

    Iterator iterator=logs.iterator();

     

     

    while

    (iterator.hasNext()){

    Log log=(Log)iterator.next();

     

     

    if(log.getLevel().equals("ERROR"

    )){

    errorLevel.add(log);

    }

     

    else if(log.getLevel().equals("WARN"

    )){

    warnLevel.add(log);

    }

     

    else if(log.getLevel().equals("DEBUG"

    )){

    debugLevel.add(log);

    }

     

    else if(log.getLevel().equals("INFO"

    )){

    infoLevel.add(log);

    }

    }

    newLogs.addAll(infoLevel);

    newLogs.addAll(errorLevel);

    newLogs.addAll(warnLevel);

    newLogs.addAll(debugLevel);

    logs.clear();

    logs.addAll(newLogs);

     

     

    return

    newLogs;

    }

     

     

    public

    ArrayList<Log> sortLogByTime(ArrayList<Log> logs){

    Collections.sort(logs,

    new

     

    Comparator(){

     

     

    public int compare(final Object o1,final

    Object o2){

     

     

    final

    Log log1=(Log)o1;

     

     

    final

    Log log2=(Log)o2;

     

     

    return

     

    return

    logs;}

    }

     

    FileUtilTool.java

     

    ParseString.compareTime(log2.getTime(),log1.getTime());}

    })

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    package

     

     

    information.sh.lp.util;

     

    import

     

     

    java.io.File;

    import

     

     

    java.io.FileInputStream;

    import

     

     

    java.io.FileOutputStream;

    import

     

     

    java.io.IOException;

    import

     

     

    java.util.ArrayList;

     

    public

     

     

    class

    FileUtilTool {

     

     

    public static

    ArrayList<File> subFiles(File file){

    File[] temp = file.listFiles();

    ArrayList<File> files =

     

    new

    ArrayList<File>();

     

     

    if (temp != null

    ) {

     

     

    for (int i = 0; i < temp.length

    ; i++) {

     

     

    if

    (temp[i].isFile()) {

    files.add(temp[i]);

    }

    }

     

    }

     

     

    return

    files;

    }

     

     

    public static

    ArrayList<File> subDirs(File file){

    File[] temp = file.listFiles();

    ArrayList<File> files =

     

    new

    ArrayList<File>();

     

     

    if (temp != null

    ) {

     

     

    for (int i = 0; i < temp.length

    ; i++) {

     

     

    if

    (temp[i].isDirectory()) {

    files.add(temp[i]);

    }

    }

    }

     

     

    return

    files;

    }

     

     

    public static

    ArrayList<File> listLogFile(File root){

    ArrayList<File> logDirs=subDirs(root);

    ArrayList<File> logfiles=

     

    new

    ArrayList<File>(),temp;

     

     

    for

    (File file: logDirs){

    temp=subFiles(file);

    logfiles.addAll(temp);

    }

     

     

    return

    logfiles;

    }

     

     

     

    public static boolean

    copyFile(File from, File toDir) {

     

     

    if

    (!from.exists() || !toDir.exists()) {

     

     

    return false

    ;

    }

     

    File to=

     

    new File(toDir.getAbsolutePath()+"/"

    +from.getName());

     

     

    if

    (!to.exists()){

     

     

    try

    {

    to.createNewFile();

    }

     

    catch

    (Exception e){

     

     

    return false

    ;

    }

    }

    FileInputStream fis;

    FileOutputStream fos;

     

     

    try

    {

    fis =

     

    new

    FileInputStream(from);

    fos =

     

    new

    FileOutputStream(to);

     

     

    byte[] buff = new byte

    [1024];

     

     

    int

    readed = -1;

     

     

    while

    ((readed = fis.read(buff)) > 0)

    fos.write(buff, 0, readed);

    fis.close();

    fos.close();

    }

     

    catch

    (IOException ioe) {

     

    }

     

     

    return true

    ;

    }

     

     

    public static void

    delFolder(String folderPath) {

     

     

    try

    {

    delAllFile(folderPath);

    String filePath = folderPath;

    filePath = filePath.toString();

    java.io.File myFilePath =

     

    new

    java.io.File(filePath);

    myFilePath.delete();

     

    }

     

    catch

    (Exception e) {

    System.

     

    out.println("delete error "

    );

    e.printStackTrace();

     

    }

     

    }

     

     

     

    public static void

    delAllFile(String path) {

    File file =

     

    new

    File(path);

     

     

    if

    (!file.exists()) {

     

     

    return

    ;

    }

     

     

    if

    (!file.isDirectory()) {

     

     

    return

    ;

    }

    String[] tempList = file.list();

    File temp =

     

    null

    ;

     

     

    for (int i = 0; i < tempList.length

    ; i++) {

     

     

    if (path.endsWith(File.separator

    )) {

    temp =

     

    new

    File(path + tempList[i]);

    }

     

    else

    {

    temp =

     

    new File(path + File.separator

    + tempList[i]);

    }

     

     

    if

    (temp.isFile()) {

    temp.delete();

    }

     

     

    if

    (temp.isDirectory()) {

    delAllFile(path +

     

    "/"

    + tempList[i]);

    delFolder(path +

     

    "/"

    + tempList[i]); }}

     

     

    IOUtil.java

     

    package

     

     

    information.sh.lp.util;

     

    import

     

     

    information.sh.lp.infoBean.ContextInfo;

    import

     

     

    information.sh.lp.infoBean.Index;

    import

     

     

    information.sh.lp.infoBean.Position;

     

    import

     

     

    java.io.BufferedReader;

    import

     

     

    java.io.BufferedWriter;

    import

     

     

    java.io.File;

    import

     

     

    java.io.FileInputStream;

    import

     

     

    java.io.FileNotFoundException;

    import

     

     

    java.io.FileOutputStream;

    import

     

     

    java.io.IOException;

    import

     

     

    java.io.InputStreamReader;

    import

     

     

    java.io.OutputStreamWriter;

    import

     

     

    java.util.ArrayList;

    import

     

     

    java.util.Iterator;

    import

     

     

    java.util.regex.Matcher;

    import

     

     

    java.util.regex.Pattern;

     

    /**

    *

    *

     

    @author Li,

    Chengri

    * Describe: This class is a IO toolkit

    */

    public

     

     

    class IOUtil {

     

    /**

    *

    *

     

    @param file The file need to be read

    *

     

    @param lineNumber The line number

    *

     

    @return The string at 'lineNumber' line in the 'file' file.

    */

     

    public static String readLine(File file, int lineNumber) {

    String line;

     

    int i = 0;

     

    if (lineNumber <= 0) {

     

    return null;

    }

     

    try {

    BufferedReader br =

    new BufferedReader(new InputStreamReader(

     

    new FileInputStream(file)));

    line = br.readLine();

     

    while (i < lineNumber - 1 && line != null) {

    line = br.readLine();

    i++;

    }

    br.close();

    }

    catch (FileNotFoundException e) {

    line =

    null;

    }

    catch (IOException e) {

    line =

    null;

    }

     

    if (i != lineNumber - 1) {

    line =

    null;

    }

     

    return line;

    }

     

    /**

    *

    *

     

    @param logfile The log file

    *

     

    @param interval The interval of two indexes.

    *

     

    @return indexes

    * Describe: Get the indexes by reading a log file, and the indexes` interval is 'interval'

    */

     

    public static ArrayList<Index> parseIndexs(File logfile, int interval) {

    ArrayList<Index> indexs =

    new ArrayList<Index>();

    Index index=

    new Index();

    String startWith =

    "^//d{4}-//d{2}-//d{2}//s//d{2}://d{2}://d{2}";

    Pattern p = Pattern.compile(startWith);

    Matcher m;

     

    boolean matched;

    String line,start_time_s=

    "";

     

    int lineNumber = 1,min, start_time=0;

     

    try {

    BufferedReader br =

    new BufferedReader(new InputStreamReader(new FileInputStream(logfile)));

     

    while ((line= br.readLine())!= null) {

    m = p.matcher(line);

    matched = m.find();

     

    if (!matched) {

    lineNumber++;

     

    continue;

    }

    min = Integer.parseInt(line.substring(14, 16));

     

    if (lineNumber==1){

    index =

    new Index();

    start_time = (min / interval) * interval;

    start_time_s = line.substring(0, 14) + addZero(start_time)+

    ":00";

    index.setStart_time(start_time_s);

    Position position =

    new Position();

    position.setFile(logfile.getAbsolutePath());

    position.setStart_line(lineNumber);

    index.addPosition(position);

    index.setInterval(interval);

    }

    else if(min>= (start_time + interval)||!start_time_s.substring(0,14).equals(line.substring(0,14))){

    index.getPosition(0).setEnd_line(lineNumber-1);

    indexs.add(index);

    index =

    new Index();

    start_time = (min / interval) * interval;

    start_time_s = line.substring(0, 14) + addZero(start_time)+

    ":00";

    index.setStart_time(start_time_s);

    Position position =

    new Position();

    position.setFile(logfile.getAbsolutePath());

    position.setStart_line(lineNumber);

    index.addPosition(position);

    index.setInterval(interval);

    }

    lineNumber++;

    }

    index.getPosition(0).setEnd_line(lineNumber-1);

    indexs.add(index);

    br.close();

    }

    catch (FileNotFoundException e) {

     

    return null;

    }

    catch (IOException e) {

     

    return null;

    }

     

    return indexs;

    }

     

    /**

    *

    *

     

    @param indexes

    *

     

    @param file The file in which write the indexes

    * Describe: Write the indexes into the file.

    */

     

    public static void writeIndexes(ArrayList<Index> indexes,File file){

     

    try{

    BufferedWriter bw=

    new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));

    Iterator iterator=indexes.iterator();

    Index index;

     

    int flush=0;

     

    while(iterator.hasNext()){

    index=(Index)iterator.next();

    bw.write(index+

    "/n");

     

    if(flush00==0){

    bw.flush();

    }

    flush++;

    }

    bw.flush();

    bw.close();

    }

    catch(IOException e){

    e.printStackTrace();

    }

    }

     

    public static String addZero(int s) {

     

    if (s < 10) {

     

    return "0" + s;

    }

    else

     

    return String.valueOf(s);

    }

     

    /**

    *

    *

     

    @param start The time where query from.

    *

     

    @param end The time where query end.

    *

     

    @return The log positions whose time between 'start' and 'end'

    * Describe: Read the rough position from the index file according to the 'start' and 'end'.

    */

     

    public static ArrayList<Position> readRoughPosition(String start,String end,String pjName){

    File indexFile=

    new File(ContextInfo.DATA_DIR+"//"+pjName+"//indexFile//index.txt");

    ArrayList<Position> positions=

    new ArrayList<Position>();

     

    int lineNumber=1;

    String line;

    String time;

     

    int compareSe,compareEe,compareEs;

     

    while((line=IOUtil.readLine(indexFile,lineNumber))!=null){

    time=line.substring(0,19);

    compareSe=ParseString.compareTime(start,time,ContextInfo.

    INDEX_INTERVAL);

    compareEs=ParseString.compareTime(time, end);

    compareEe=ParseString.compareTime(end,time,ContextInfo.

    INDEX_INTERVAL);

     

    if(compareEs==-1){

     

    break;

    }

    else if(compareEe==1){

     

    int reCount=Integer.parseInt(line.substring(line.indexOf('?')+8));

     

    for(int i=0;i<reCount;i++){

    String s=IOUtil.readLine(indexFile,++lineNumber);

    Position position=ParseString.parsePosition(s);

    positions.add(position);

    }

     

    break;

    }

    else if(compareSe==1){

     

    int reCount=Integer.parseInt(line.substring(line.indexOf('?')+8));

     

    for(int i=0;i<reCount;i++){

    String s=IOUtil.readLine(indexFile,++lineNumber);

    Position position=ParseString.parsePosition(s);

    positions.add(position);

    }

    lineNumber++;

    }

    else{

     

    int reCount=Integer.parseInt(line.substring(line.indexOf('?')+8));

    lineNumber=lineNumber+reCount+1;

    }

    }

     

    if(positions.isEmpty()){

    positions=

    null;

    }

     

    return positions;

    }

     

     

     

    }

     

     

    ParseString.java

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    package

     

     

    information.sh.lp.util;

     

    import

     

     

    information.sh.lp.infoBean.Log;

    import

     

     

    information.sh.lp.infoBean.Position;

     

    import

     

     

    java.util.Calendar;

    import

     

     

    java.util.regex.Matcher;

    import

     

     

    java.util.regex.Pattern;

    /**

    *

    *

     

     

    @author

    Li,

    Chengri

    * Describe: A assistant class.

    */

    public

     

     

    class

    ParseString {

     

     

     

    /**

    *

    *

     

     

    @param

    block The string type log

    *

     

     

    @return

    A log instance

    * Describe: Parse the string to a log instance

    */

     

     

    public static

    Log stringToLog(String block,String spliter){

    // String timePattern="//d{4}-//d{2}-//d{2}//s//d{2}://d{2}://d{2}";

    // String levelPattern="INFO|WARN|DEBUG|ERROR";

    // String locationPattern="(//s-//s.*:[?])|(//s-//s.*:(//d){1,8}//s*-)";

    Pattern pattern;

    Matcher matcher;

    Log log=

     

    new

    Log();

     

     

    int

    endIndex;

     

    endIndex=block.indexOf(spliter);

    log.setTime(block.substring(0,endIndex));

     

    block=block.substring(endIndex+spliter.length());

    endIndex=block.indexOf(spliter);

    log.setThread(block.substring(0,endIndex));

     

    block=block.substring(endIndex+spliter.length());

    endIndex=block.indexOf(spliter);

    log.setLevel(block.substring(0,endIndex));

     

    block=block.substring(endIndex+spliter.length());

    endIndex=block.indexOf(spliter);

    log.setPosition(block.substring(0,endIndex));

     

    block=block.substring(endIndex+spliter.length());

    log.setMessage(block);

     

     

     

    return

    log;

    }

     

     

    /**

    *

    *

     

     

    @param

    t1 String type time

    *

     

     

    @param

    t2 String type time

    *

     

     

    @param

    t2Add The amount minutes which t2 adds

    *

     

     

    @return

    * Describe: Compare t1 to (t2+t2Add)

    */

     

     

    public static int compareTime(String t1, String t2, int

    t2Add) {

    Calendar c1 = parseTime(t1);

    Calendar c2 = parseTime(t2);

    c2.add(Calendar.

     

    MINUTE

    , t2Add);

     

     

    if

    (c1.before(c2)) {

     

     

    return

    1;

    }

     

    else if

    (c2.before(c1)) {

     

     

    return

    -1;

    }

     

    else

    {

     

     

    return

    0;

    }

    }

     

     

    /**

    *

    *

     

     

    @param

    time String type time

    *

     

     

    @return

    A Calendar instance

    */

     

     

    public static

    Calendar parseTime(String time) {

    Calendar c = Calendar.getInstance();

     

     

    int

    paras[] = { Integer.parseInt(time.substring(0, 4)),

    Integer.parseInt(time.substring(5, 7)),

    Integer.parseInt(time.substring(8, 10)),

    Integer.parseInt(time.substring(11, 13)),

    Integer.parseInt(time.substring(14, 16)),

    Integer.parseInt(time.substring(17, 19)), };

    c.set(paras[0], paras[1] - 1, paras[2], paras[3], paras[4], paras[5]);

     

     

    return

    c;

    }

     

     

    /**

    *

    *

     

     

    @param

    s String type log

    *

     

     

    @return

    The log`s position

    */

     

     

    public static

    Position parsePosition(String s){

    Position position=

     

    new

    Position();

     

     

    int quChar=s.indexOf('?'

    );

     

     

    int waChar=s.indexOf('~'

    );

     

     

    int

    startLine=Integer.parseInt(s.substring((quChar+1),waChar));

     

     

    int

    endLine=Integer.parseInt(s.substring((waChar+1)));

    position.setFile(s.substring(0,quChar-1));

    position.setStart_line(startLine);

    position.setEnd_line(endLine);

     

     

    return

    position;

     

    }

     

     

    /**

    *

    *

     

     

    @param

    t1 String type time

    *

     

     

    @param

    t2 String type time

    *

     

     

    @return

    The result of comparison of t1 and t2

    */

     

     

    public static int

    compareTime(String t1,String t2){

     

     

    if

    (t1.equals(t2)){

     

     

    return

    0;

    }

    Calendar c1=parseTime(t1);

    Calendar c2=parseTime(t2);

     

     

    if

    (c1.before(c2)){

     

     

    return

    1;

    }

     

     

    return

    -1;

    }

     

     

    /**

    *

    *

     

     

    @param

    message A string

    *

     

     

    @return

    A string

    * Describe:To avoid input the message which includes html tag, must change the '<' to '<'

    */

     

     

    public static

    String inputToHtml(String message){

    String s=message.replaceAll(

     

    "<", "<"

    );

     

     

    return

    s;

    }

     

     

     

    public static void

    main(String args[]){

    String block=

     

    "2010-12-01 16:48:59 |/*/*| Main Thread |/*/*| INFO |/*/*| citi.sh.lp.jms.FileAppTest.main(FileAppTest.java:26) |/*/*| The info 213"

    ;

    String spliter=

     

    " |/*/*| "

    ;

    Log log=ParseString.stringToLog(block, spliter);

    System.

     

    out

    .println(log);}}

     

     

    LoginController.java

     

    package

     

     

    information.sh.lp.web.controller;

     

    import

     

     

    information.sh.lp.infoBean.ContextInfo;

    import

     

     

    information.sh.lp.util.FileUtilTool;

    import

     

     

    information.sh.lp.web.service.BeanFactory;

    import

     

     

    information.sh.lp.web.service.LogReceiver;

     

    import

     

     

    java.io.File;

    import

     

     

    java.io.IOException;

    import

     

     

    java.util.ArrayList;

     

    import

     

     

    javax.servlet.http.HttpServletRequest;

    import

     

     

    javax.servlet.http.HttpServletResponse;

    import

     

     

    javax.servlet.http.HttpSession;

     

    import

     

     

    org.springframework.web.servlet.ModelAndView;

    import

     

     

    org.springframework.web.servlet.mvc.Controller;

     

    public

     

     

    class LoginController implements Controller {

     

    private String loginUser;

     

    private String loginAdmin;

     

    private String loginDeny;

     

     

    public ModelAndView handleRequest(HttpServletRequest req,

    HttpServletResponse res) {

    HttpSession session=req.getSession();

    String role=req.getParameter(

    "role");

    String userName = req.getParameter(

    "userName");

    String passWord = req.getParameter(

    "passWord");

     

     

    if ("user".equals(role)){

     

    if(ContextInfo.userName.equals(userName)&&ContextInfo.userPassword.equals(passWord)){

    session.setAttribute(

    "userName",userName);

     

    return new ModelAndView(loginUser);

    }

     

    return new ModelAndView(loginDeny);

    }

     

    else{

     

    if(ContextInfo.adminName.equals(userName)&&ContextInfo.adminPassword.equals(passWord)){

    session.setAttribute(

    "userName",userName);

     

    //get the projects` directory (this part should be in ManagementController class)

    File root=

    new File(ContextInfo.DATA_DIR);

    ArrayList<File> projects=FileUtilTool.subDirs(root);

     

    // Flush the messages in the cache(this part should be in ManagementController class)

    LogReceiver logReceiver = (LogReceiver) BeanFactory.getBean(

    "logReceiver");

     

    if (logReceiver.getEvents() != null

    && !logReceiver.getEvents().isEmpty()) {

     

    try {

    logReceiver.writeLogs(logReceiver.getEvents());

    logReceiver.getEvents().clear();

    }

    catch (IOException e) {

    e.printStackTrace();

    }

    }

    req.getSession().setAttribute(

    "projects",projects);

     

    return new ModelAndView(loginAdmin);

    }

     

    else{

     

    return new ModelAndView(loginDeny);

    }

    }

    }

     

     

    public void setLoginUser(String LoginUser) {

     

    this.loginUser = LoginUser;

    }

     

    public void setLoginAdmin(String loginAdmin){

     

    this.loginAdmin=loginAdmin;

    }

     

    public void setLoginDeny(String loginDeny){

     

    this.loginDeny=loginDeny;

    }

    }

     

     

    ManageController.java

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    package

     

     

    information.sh.lp.web.controller;

     

    import

     

     

    information.sh.lp.infoBean.ContextInfo;

    import

     

     

    information.sh.lp.model.IndexDAO;

    import

     

     

    information.sh.lp.util.FileUtilTool;

    import

     

     

    information.sh.lp.web.service.BeanFactory;

     

    import

     

     

    java.io.File;

    import

     

     

    java.util.ArrayList;

     

    import

     

     

    javax.servlet.http.HttpServletRequest;

    import

     

     

    javax.servlet.http.HttpServletResponse;

     

    import

     

     

    org.springframework.web.servlet.ModelAndView;

    import

     

     

    org.springframework.web.servlet.mvc.multiaction.MultiActionController;

     

    public

     

     

    class ManageController extends

    MultiActionController {

     

     

    private String listPage

    ;

     

     

    private String successPage

    ;

     

     

    private String errorPage

    ;

     

     

    public void

    setListPage(String listPage){

     

     

    this.listPage

    =listPage;

    }

     

     

    public

    String getListPage(){

     

     

    return this.listPage

    ;

    }

     

     

    public void

    setSuccessPage(String successPage){

     

     

    this.successPage

    =successPage;

    }

     

     

    public

    String getSuccessPage(){

     

     

    return this.successPage

    ;

    }

     

     

    public

    String getErrorPage(){

     

     

    return this.errorPage

    ;

    }

     

     

    public void

    setErrorPage(String errorPage){

     

     

    this.errorPage

    =errorPage;

    }

     

     

     

    public

    ModelAndView list(HttpServletRequest req, HttpServletResponse res) {

    String projectName = (String) req.getParameter(

     

    "project"

    );

     

     

    if (projectName != null && !""

    .equals(projectName)) {

    File dir =

     

    new File(ContextInfo.DATA_DIR + "/"

    + projectName);

    ArrayList<File> logFiles = FileUtilTool.subFiles(dir);

     

     

    if

    (!logFiles.isEmpty()) {

    req.getSession().setAttribute(

     

    "project"

    , projectName);

    ModelAndView mAndv =

     

    new ModelAndView(this.listPage

    ,

     

     

    "logFiles"

    , logFiles);

     

     

    return

    mAndv;

    }

    }

    String message =

     

    "The project is empty!"

    ;

    ModelAndView mAndv =

     

    new ModelAndView(this.errorPage, "message"

    ,

    message);

     

     

    return

    mAndv;

    }

     

     

    public

    ModelAndView copy(HttpServletRequest req, HttpServletResponse res){

    ArrayList<File> files=(ArrayList<File>)req.getSession().getAttribute(

     

    "logFiles"

    );

     

     

    int

    i=1;

     

     

    boolean seleted=false

    ;

    String copyto=req.getParameter(

     

    "copyto"

    );

    String message=

     

    ""

    ;

    File copytoDir=

     

    new

    File(copyto);

     

     

    if

    (!copytoDir.exists()){

    message=

     

    "Please input a corret directory path"

    ;

    }

     

    else if

    (!copytoDir.isDirectory()){

    message=

     

    "The destination file is not directory. Please input a directory."

    ;

    }

     

     

    if(!""

    .equals(message)){

     

     

    return new ModelAndView(this.errorPage,"message"

    ,message);

    }

     

     

    for

    (File file: files){

    String para=req.getParameter(

     

    ""

    +i);

     

     

    if(para!=null

    ){

    seleted=

     

    true

    ;

     

     

    if

    (!FileUtilTool.copyFile(file, copytoDir)){

    message=

     

    "Occur an error then copy files!"

    ;

     

     

    return new ModelAndView(this.errorPage,"message"

    ,message);

    }

    }

    i++;

    }

     

     

    if

    (!seleted){

    message=

     

    "Please chooce at least one file to copy!"

    ;

     

     

    return new ModelAndView(this.errorPage,"message"

    ,message);

    }

    String projectName=(String)req.getSession().getAttribute(

     

    "project"

    );

    String url=

     

    "manage.do?action=list&&project="

    +projectName;

    req.setAttribute(

     

    "url"

    ,url);

    message=

     

    "Success copy file !"

    ;

    ModelAndView mAndv =

     

    new ModelAndView(this.successPage,"message"

    ,message);

     

     

    return

    mAndv;

    }

     

     

    public

    ModelAndView remove(HttpServletRequest req, HttpServletResponse res){

    ArrayList<File> files=(ArrayList<File>)req.getSession().getAttribute(

     

    "logFiles"

    );

     

     

    int

    i=1;

     

     

    boolean seleted=false

    ;

    String fileList=

     

    ""

    ;

     

     

    for

    (File file: files){

    String para=req.getParameter(

     

    ""

    +i);

     

     

    if(para!=null

    ){

    seleted=

     

    true

    ;

    fileList=fileList+file.getAbsolutePath()+

     

    "/n"

    ;

     

     

    if

    (!file.delete()){

    String message=

     

    "Delete file:"+file.getAbsoluteFile()+" failed(Maybe the file is still using)!"

    ;

     

     

    return new ModelAndView(this.errorPage,"message"

    ,message);

    }

    }

    i++;

    }

     

     

    if

    (!seleted){

    String message=

     

    "Please chooce at least one file to remove!"

    ;

     

     

    return new ModelAndView(this.errorPage,"message"

    ,message);

    }

     

     

     

    //If the project`s log file are all deleted, the project directory should be deleted.

    String projectName=(String)req.getSession().getAttribute(

     

    "project"

    );

    File projectFile=

     

    new File(ContextInfo.DATA_DIR+"/"

    +projectName);

     

     

    if

    (projectFile.exists()&&FileUtilTool.subFiles(projectFile).isEmpty()){

    FileUtilTool.delFolder(projectFile.getAbsolutePath());

     

    String url=req.getContextPath()+

     

    "/jsp/manageData.jsp"

    ;

    req.setAttribute(

     

    "url"

    ,url);

    String message=

     

    "Success delete file!"

    ;

    System.

     

    out.println("Success delete files:/n"

    +fileList);

     

    IndexDAO indexDao=(IndexDAO)BeanFactory.getBean(

     

    "indexDAO"

    );

    indexDao.buildIndex();

    ModelAndView mAndv =

     

    new ModelAndView(this.successPage,"message"

    ,message);

     

     

    return

    mAndv;

     

    }

    String url=

     

    "manage.do?action=list&&project="

    +projectName;

    req.setAttribute(

     

    "url"

    ,url);

    String message=

     

    "Success delete file!"

    ;

    System.

     

    out.println("Success delete files:/n"

    +fileList);

     

    IndexDAO indexDao=(IndexDAO)BeanFactory.getBean(

     

    "indexDAO"

    );

    indexDao.buildIndex();

    ModelAndView mAndv =

     

    new ModelAndView(this.successPage,"message"

    ,message);

     

     

    return

    mAndv;

     

    }}


    最新回复(0)