📄 buildurl.java
字号:
/*
* FileName CreateUrlUtil.java
* Create Date 2006-5-17
* Author shiwei
* Descript 生成各种类型的URL
* Version
*/
package com.snoics.reptile.link.createUrl;
import java.net.URI;
import java.util.regex.Pattern;
import com.snoics.base.net.SnoicsUrl;
import com.snoics.base.util.RandomSeed;
import com.snoics.base.util.StringClass;
import com.snoics.base.util.regex.Regex;
import com.snoics.reptile.link.TempLink;
import com.snoics.reptile.regex.filter.IRegexFilter;
import com.snoics.reptile.regex.filter.IndexTypeFilter;
import com.snoics.reptile.regex.filter.RemoteUrlFilter;
import com.snoics.reptile.regex.filter.ResolvedUrlFilter;
import com.snoics.reptile.system.common.Common;
import com.snoics.reptile.system.common.CommonObject;
public class BuildUrl implements IBuildUrl{
private Regex regex=new Regex();
private TempLink tempLink=new TempLink();
private CommonObject commonObject=new CommonObject();
private SnoicsUrl snoicsUrl=new SnoicsUrl();
/**
* 取得文件存放的根目录
* @return String
*/
public String getFileRootPath(){
return commonObject.getConfigInfo(Common.CONFIGFILE_NODE_FILEROOTPATH);
}
/**
* 生成相对于website的URL
* @param url 当前URL
* @param parentUrl 上一级页面绝对URL
* @return String
*/
public String buildRelativizeUrl(String url,String parentUrl){
if(url.startsWith("/")){
return url;
}
IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
remoteUrlFilter.setUrl(url);
if(remoteUrlFilter.filter()){
return url;
}
IRegexFilter resolvedUrlFilter=new ResolvedUrlFilter();
resolvedUrlFilter.setUrl(url);
String website="^"+commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITE);
website=StringClass.getPreString(website,"/");
String websiteRegexString=website+":?[0-9]*"+"/";
if(resolvedUrlFilter.filter()){
url=regex.getReplaceFirst(url,"",websiteRegexString,Pattern.CASE_INSENSITIVE);
url="/"+url;
url=StringClass.getFormatPath(url);
}else{
url=StringClass.getFormatPath(url);
parentUrl=regex.getReplaceFirst(parentUrl,"",websiteRegexString,Pattern.CASE_INSENSITIVE);
parentUrl="/"+parentUrl;
parentUrl=StringClass.getFormatPath(parentUrl);
URI uri=snoicsUrl.getResolved(parentUrl,url);
if(uri==null){
return url;
}else{
url=uri.toString();
}
}
return url;
}
/**
* 生成相对于parentUrl的URL
* @param url 当前URL
* @param parentUrl 上一级页面绝对URL
* @return String
*/
public String buildRelativizeWithParentUrl(String url,String parentUrl){
IRegexFilter resolvedUrlFilter=new ResolvedUrlFilter();
resolvedUrlFilter.setUrl(url);
if(resolvedUrlFilter.filter()){
return url;
}
if(url.startsWith("/")){
return url;
}
url=StringClass.getFormatPath(url);
URI uri=snoicsUrl.getRelativize(parentUrl,url);
if(uri==null){
return url;
}else{
url=uri.toString();
}
return url;
}
/**
* 生成绝对URL
* @param url 当前URL
* @param parentUrl 上一级页面绝对URL
* @return String
*/
public String buildResolvedUrl(String url,String parentUrl){
IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
remoteUrlFilter.setUrl(url);
if(remoteUrlFilter.filter()){
return url;
}
IRegexFilter resolvedUrlFilter=new ResolvedUrlFilter();
resolvedUrlFilter.setUrl(url);
if(resolvedUrlFilter.filter()){
return url;
}else{
url=StringClass.getFormatPath(url);
String website=commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITE);
if(url.startsWith("/")){
if(website.endsWith("/")){
website=website.substring(0,website.length()-1);
}
return website+url;
}else{
if(parentUrl==null){
URI uri=snoicsUrl.getResolved(website,url);
if(uri==null){
return url;
}else{
url=uri.toString();
}
}else{
URI uri=snoicsUrl.getResolved(parentUrl,url);
if(uri==null){
return url;
}else{
url=uri.toString();
}
}
}
}
return url;
}
/**
* 返回重新生成后的相对于website的URL
* @param url
* @param parentUrl
* @return String
*/
public String buildLocalHtmlRelativizeFileName(String url,String parentUrl){
String pageFlagString=StringClass.getLastString(url,"#");
url=StringClass.getPreString(url,"#");
if(url.equals("")){
url=StringClass.getLastString(parentUrl,"/");
url=StringClass.getPreString(url,"#");
}
String relativizeUrl=buildRelativizeUrl(url,parentUrl);
String relativizeWithWebsiteUrl=buildRelativizeUrl(url,parentUrl);
String newRelativizeUrl="";
String temprelativizeUrl=tempLink.getLink(relativizeWithWebsiteUrl);
if(temprelativizeUrl!=null){
if(!pageFlagString.equals("")){
temprelativizeUrl=temprelativizeUrl+"#"+pageFlagString;
}
return temprelativizeUrl;
}else{
String filename="";
IRegexFilter indexTypeFilter=new IndexTypeFilter();
indexTypeFilter.setUrl(relativizeUrl);
boolean indexFlag=indexTypeFilter.filter();
newRelativizeUrl=StringClass.getPreString(relativizeUrl,"/");
if(newRelativizeUrl.equalsIgnoreCase(relativizeUrl)){
newRelativizeUrl="";
}else{
newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl+"/");
}
if(indexFlag){
filename="index";
}else{
int filenamelength=32;
try{
filenamelength=Integer.parseInt(commonObject.getConfigInfo(Common.CONFIGFILE_NODE_FILENAMELENGTH));
}catch(Exception e){
}
filename=RandomSeed.getSeed(filenamelength);
}
newRelativizeUrl=newRelativizeUrl+filename+Common.DEFAULT_STATICFILETYPE;
newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl);
tempLink.addLink(relativizeUrl,newRelativizeUrl);
}
if(!pageFlagString.equals("")){
newRelativizeUrl=newRelativizeUrl+"#"+pageFlagString;
}
return newRelativizeUrl;
}
/**
* 返回重新生成后的相对于parentUrl的URL
* @param url
* @param parentUrl
* @return String
*/
public String buildLocalHtmlRelativizeWithParentFileName(String url,String parentUrl){
String pageFlagString=StringClass.getLastString(url,"#");
url=StringClass.getPreString(url,"#");
if(url.equals("")){
url=StringClass.getLastString(parentUrl,"/");
url=StringClass.getPreString(url,"#");
}
String relativizeUrl=buildRelativizeWithParentUrl(url,parentUrl);
String relativizeWithWebsiteUrl=buildRelativizeUrl(url,parentUrl);
String newRelativizeUrl="";
String temprelativizeUrl=tempLink.getLink(relativizeWithWebsiteUrl);
if(temprelativizeUrl!=null){
temprelativizeUrl=StringClass.getLastString(temprelativizeUrl,"/");
String newurl=StringClass.getPreString(relativizeUrl,"/");
if(newurl.equals(relativizeUrl)){
newurl=temprelativizeUrl;
}else{
newurl=newurl+"/"+temprelativizeUrl;
}
relativizeUrl = StringClass.getFormatPath(newurl);
if(!pageFlagString.equals("")){
relativizeUrl=relativizeUrl+"#"+pageFlagString;
}
return relativizeUrl;
}else{
String filename="";
IRegexFilter indexTypeFilter=new IndexTypeFilter();
indexTypeFilter.setUrl(relativizeUrl);
boolean indexFlag=indexTypeFilter.filter();
newRelativizeUrl=StringClass.getPreString(relativizeUrl,"/");
if(newRelativizeUrl.equalsIgnoreCase(relativizeUrl)){
newRelativizeUrl="";
}else{
newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl+"/");
}
if(indexFlag){
filename="index";
}else{
int filenamelength=32;
try{
filenamelength=Integer.parseInt(commonObject.getConfigInfo(Common.CONFIGFILE_NODE_FILENAMELENGTH));
}catch(Exception e){
}
filename=RandomSeed.getSeed(filenamelength);
}
newRelativizeUrl=newRelativizeUrl+filename+Common.DEFAULT_STATICFILETYPE;
newRelativizeUrl=StringClass.getFormatPath(newRelativizeUrl);
buildLocalHtmlRelativizeFileName(url,parentUrl);
String theNewRelativizeUrl=buildRelativizeUrl(newRelativizeUrl,parentUrl);
tempLink.addLink(relativizeWithWebsiteUrl,theNewRelativizeUrl);
}
if(!pageFlagString.equals("")){
newRelativizeUrl=newRelativizeUrl+"#"+pageFlagString;
}
return newRelativizeUrl;
}
/**
* 生成HTML文件的本地绝对文件路径
* @param url
* @param parentUrl
* @return String
*/
public String buildLocalHtmlResolvedFileName(String url,String parentUrl){
String resolvedFileName=getFileRootPath()+"/"+buildLocalHtmlRelativizeFileName(url,parentUrl);
resolvedFileName=StringClass.getFormatPath(resolvedFileName);
return resolvedFileName;
}
/**
* 生成二进制文件的本地相对文件路径
* @param url
* @param parentUrl
* @return String
*/
public String buildLocalBinFileRelativizeName(String url,String parentUrl){
IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
remoteUrlFilter.setUrl(url);
String relativizeUrl="";
if(!remoteUrlFilter.filter()){
relativizeUrl=buildRelativizeUrl(url,parentUrl);
}else{
String binfile=StringClass.getLastString(url,"/");
relativizeUrl=StringClass.getFormatPath("/"+Common.REMOTE_DOWNLOADFILE_SAVE_PATH+"/"+commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITENAME)+"/"+binfile);
}
buildRelativizeUrl(url,parentUrl);
return relativizeUrl;
}
/**
* 生成二进制文件的本地相对文件路径
* @param url
* @param parentUrl
* @return String
*/
public String buildLocalBinFileRelativizeWithParentName(String url,String parentUrl){
IRegexFilter remoteUrlFilter=new RemoteUrlFilter();
remoteUrlFilter.setUrl(url);
String relativizeUrl="";
if(!remoteUrlFilter.filter()){
relativizeUrl=buildRelativizeWithParentUrl(url,parentUrl);
}else{
String binfile=StringClass.getLastString(url,"/");
relativizeUrl=StringClass.getFormatPath("/"+Common.REMOTE_DOWNLOADFILE_SAVE_PATH+"/"+commonObject.getConfigInfo(Common.CONFIGFILE_NODE_WEBSITENAME)+"/"+binfile);
}
buildRelativizeUrl(url,parentUrl);
return relativizeUrl;
}
/**
* 生成二进制文件的本地绝对文件路径
* @param url
* @param parentUrl
* @return String
*/
public String buildLocalBinFileResolvedName(String url,String parentUrl){
String resolvedFileName=getFileRootPath()+"/"+buildLocalBinFileRelativizeName(url,parentUrl);
resolvedFileName=StringClass.getFormatPath(resolvedFileName);
return resolvedFileName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -