systeminitializing.java

来自「web版的SVN客户端」· Java 代码 · 共 88 行

JAVA
88
字号
package org.polarion.svnwebclient.web;

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.polarion.svnwebclient.SVNWebClientException;
import org.polarion.svnwebclient.authorization.UserCredentials;
import org.polarion.svnwebclient.authorization.impl.CredentialsManager;
import org.polarion.svnwebclient.configuration.ConfigurationProvider;
import org.polarion.svnwebclient.data.DataProviderException;
import org.polarion.svnwebclient.data.DataProviderFactory;
import org.polarion.svnwebclient.data.IDataProvider;
import org.polarion.svnwebclient.data.javasvn.DataProvider;
import org.polarion.svnwebclient.web.resource.Links;
import org.polarion.svnwebclient.web.support.AbstractRequestHandler;
import org.polarion.svnwebclient.web.support.State;


public class SystemInitializing {
	public static final String ORIGINAL_URL = "originalUrl";
	public static final String ID = "id";	
	protected State state;
	
	public IDataProvider init(HttpServletRequest request, HttpServletResponse response, AbstractRequestHandler requestHandler) throws SVNWebClientException {
		this.state = new State(request, response);		
        CredentialsManager credentialsManager = new CredentialsManager();
        UserCredentials userCredentials = null;
               
        userCredentials = credentialsManager.getUserCredentials(request, response);                
        if (userCredentials == null) {
        	return null;
        }
        
        String id = (String) request.getSession().getAttribute(SystemInitializing.ID);
        String url = this.getRepositoryLocation(requestHandler);
        if (id == null) {
        	id = DataProvider.getID(url,userCredentials.getUsername(), userCredentials.getPassword());                                  
            if (ConfigurationProvider.getInstance().isMultiRepositoryMode()){
            	try {
		    		DataProvider.startup(userCredentials.getUsername(), userCredentials.getPassword(), id, url);
		    	} catch (DataProviderException e) {
		    		 Logger.getLogger(this.getClass()).error(e, e);
		    	}
            }
            request.getSession().setAttribute(SystemInitializing.ID, id);
            this.checkRestrictedAccess();
        }                        
        
        
        IDataProvider dataProvider = DataProviderFactory.getDataProvider();
        dataProvider.setRelativeLocation(id, requestHandler.getRepositoryName());
        dataProvider.connect(userCredentials, id, url);      
        return dataProvider;	                        
	}
		
	protected void checkRestrictedAccess() {
		String originalUrl = (String) this.state.getRequest().getSession().getAttribute(SystemInitializing.ORIGINAL_URL);
        if (originalUrl != null) {
        	String currentUri = this.state.getRequest().getServletPath().substring(1);
        	if ( ! originalUrl.equals(currentUri)) {
        		AttributeStorage.getInstance().cleanSession(this.state.getRequest().getSession());
        	}        	        
        }
	}
	
	public void redirectToRestrictPage() {
		  String query = this.state.getRequest().getQueryString();
		  String uri = this.state.getRequest().getServletPath();
		  this.state.getRequest().getSession().setAttribute(SystemInitializing.ORIGINAL_URL, uri.substring(1));		  		     				    			 
		  try {
			  this.state.getResponse().sendRedirect(Links.RESTRICTED_ACCESS + "?" + query);
		  } catch (IOException e) {			  
		  }		  
	  }  
	  
	  protected String getRepositoryLocation(AbstractRequestHandler requestHandler){
	    	String res = "";
	    	if (!ConfigurationProvider.getInstance().isMultiRepositoryMode()) {
	    		res = ConfigurationProvider.getInstance().getRepositoryUrl();    		
	    	} else {
	    		res += ConfigurationProvider.getInstance().getParentRepositoryDirectory() + 
	    		requestHandler.getRepositoryName();
	    	}
	    	return res;
	    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?