package com.matrix.component.ueditor; 
 | 
  
 | 
import java.text.SimpleDateFormat; 
 | 
import java.util.Date; 
 | 
import java.util.regex.Matcher; 
 | 
import java.util.regex.Pattern; 
 | 
  
 | 
public class PathFormat { 
 | 
     
 | 
    private static final String TIME = "time"; 
 | 
    private static final String FULL_YEAR = "yyyy"; 
 | 
    private static final String YEAR = "yy"; 
 | 
    private static final String MONTH = "mm"; 
 | 
    private static final String DAY = "dd"; 
 | 
    private static final String HOUR = "hh"; 
 | 
    private static final String MINUTE = "ii"; 
 | 
    private static final String SECOND = "ss"; 
 | 
    private static final String RAND = "rand"; 
 | 
     
 | 
    private static Date currentDate = null; 
 | 
     
 | 
    public static String parse ( String input ) { 
 | 
         
 | 
        Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE  ); 
 | 
        Matcher matcher = pattern.matcher(input); 
 | 
         
 | 
        PathFormat.currentDate = new Date(); 
 | 
         
 | 
        StringBuffer sb = new StringBuffer(); 
 | 
         
 | 
        while ( matcher.find() ) { 
 | 
             
 | 
            matcher.appendReplacement(sb, PathFormat.getString( matcher.group( 1 ) ) ); 
 | 
             
 | 
        } 
 | 
         
 | 
        matcher.appendTail(sb); 
 | 
         
 | 
        return sb.toString(); 
 | 
    } 
 | 
     
 | 
    /** 
 | 
     * 格式化路径, 把windows路径替换成标准路径 
 | 
     * @param input 待格式化的路径 
 | 
     * @return 格式化后的路径 
 | 
     */ 
 | 
    public static String format ( String input ) { 
 | 
         
 | 
        return input.replace( "\\", "/" ); 
 | 
         
 | 
    } 
 | 
  
 | 
    public static String parse ( String input, String filename ) { 
 | 
     
 | 
        Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE  ); 
 | 
        Matcher matcher = pattern.matcher(input); 
 | 
        String matchStr = null; 
 | 
         
 | 
        PathFormat.currentDate = new Date(); 
 | 
         
 | 
        StringBuffer sb = new StringBuffer(); 
 | 
         
 | 
        while ( matcher.find() ) { 
 | 
             
 | 
            matchStr = matcher.group( 1 ); 
 | 
            if ( matchStr.indexOf( "filename" ) != -1 ) { 
 | 
                filename = filename.replace( "$", "\\$" ).replaceAll( "[\\/:*?\"<>|]", "" ); 
 | 
                matcher.appendReplacement(sb, filename ); 
 | 
            } else { 
 | 
                matcher.appendReplacement(sb, PathFormat.getString( matchStr ) ); 
 | 
            } 
 | 
             
 | 
        } 
 | 
         
 | 
        matcher.appendTail(sb); 
 | 
         
 | 
        return sb.toString(); 
 | 
    } 
 | 
         
 | 
    private static String getString ( String pattern ) { 
 | 
         
 | 
        pattern = pattern.toLowerCase(); 
 | 
         
 | 
        // time 处理 
 | 
        if ( pattern.indexOf( PathFormat.TIME ) != -1 ) { 
 | 
            return PathFormat.getTimestamp(); 
 | 
        } else if ( pattern.indexOf( PathFormat.FULL_YEAR ) != -1 ) { 
 | 
            return PathFormat.getFullYear(); 
 | 
        } else if ( pattern.indexOf( PathFormat.YEAR ) != -1 ) { 
 | 
            return PathFormat.getYear(); 
 | 
        } else if ( pattern.indexOf( PathFormat.MONTH ) != -1 ) { 
 | 
            return PathFormat.getMonth(); 
 | 
        } else if ( pattern.indexOf( PathFormat.DAY ) != -1 ) { 
 | 
            return PathFormat.getDay(); 
 | 
        } else if ( pattern.indexOf( PathFormat.HOUR ) != -1 ) { 
 | 
            return PathFormat.getHour(); 
 | 
        } else if ( pattern.indexOf( PathFormat.MINUTE ) != -1 ) { 
 | 
            return PathFormat.getMinute(); 
 | 
        } else if ( pattern.indexOf( PathFormat.SECOND ) != -1 ) { 
 | 
            return PathFormat.getSecond(); 
 | 
        } else if ( pattern.indexOf( PathFormat.RAND ) != -1 ) { 
 | 
            return PathFormat.getRandom( pattern ); 
 | 
        } 
 | 
         
 | 
        return pattern; 
 | 
         
 | 
    } 
 | 
  
 | 
    private static String getTimestamp () { 
 | 
        return System.currentTimeMillis() + ""; 
 | 
    } 
 | 
     
 | 
    private static String getFullYear () { 
 | 
        return new SimpleDateFormat( "yyyy" ).format( PathFormat.currentDate ); 
 | 
    } 
 | 
     
 | 
    private static String getYear () { 
 | 
        return new SimpleDateFormat( "yy" ).format( PathFormat.currentDate ); 
 | 
    } 
 | 
     
 | 
    private static String getMonth () { 
 | 
        return new SimpleDateFormat( "MM" ).format( PathFormat.currentDate ); 
 | 
    } 
 | 
     
 | 
    private static String getDay () { 
 | 
        return new SimpleDateFormat( "dd" ).format( PathFormat.currentDate ); 
 | 
    } 
 | 
     
 | 
    private static String getHour () { 
 | 
        return new SimpleDateFormat( "HH" ).format( PathFormat.currentDate ); 
 | 
    } 
 | 
     
 | 
    private static String getMinute () { 
 | 
        return new SimpleDateFormat( "mm" ).format( PathFormat.currentDate ); 
 | 
    } 
 | 
     
 | 
    private static String getSecond () { 
 | 
        return new SimpleDateFormat( "ss" ).format( PathFormat.currentDate ); 
 | 
    } 
 | 
     
 | 
    private static String getRandom ( String pattern ) { 
 | 
         
 | 
        int length = 0; 
 | 
        pattern = pattern.split( ":" )[ 1 ].trim(); 
 | 
         
 | 
        length = Integer.parseInt( pattern ); 
 | 
         
 | 
        return ( Math.random() + "" ).replace( ".", "" ).substring( 0, length ); 
 | 
         
 | 
    } 
 | 
  
 | 
} 
 |