All pastes #234701 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-11-02 19:50 UTC
rendered paste body
/*
 * UserArticle.java created on Dec 31, 2004
 *
 */
package org.remiss.db;

import javax.servlet.http.HttpServletRequest;

/**
 * @author roger
 *
 */
public class UserArticle {
	
	private int view,start,action;
	private final Articles art;
	private static final int ART_LIMIT=10;

	public static String startPage, processPage;
	//ACTIONS
	public static final int NO_ACTION=0, EDIT_ART=1, UPDATE_ART=3, NEW_ART=4;
	public static final int INSERT_ART=5, DELETE_ART=6, LIST_ART=7, DELETE_CONFIRM=8;
	public static final int DELETE_COMMENT = 9;
	
	public UserArticle(){
		view=0;
		start=0;
		startPage = "/index.jsp";
		processPage = "/docs/articles.jsp";
		art = new Articles();
	}
	
	public void setView(String view) {
		try {
			this.view = Integer.parseInt(view);
		}
		catch(NumberFormatException e) {
			this.view = -1;
		}
	}
	
	public void setStart(String start) {
		try {
			this.start = Integer.parseInt(start);
			if(this.start<0)
				this.start=0;
		}
		catch(NumberFormatException e) {
			this.start = 0;
		}
	}
	public void setAction(String a) {
		try {
			action = Integer.parseInt(a);
			if(action<0)
				action=UserArticle.NO_ACTION;
		}
		catch(NumberFormatException e) {
			action = UserArticle.NO_ACTION;
		}
	}
	
	private void checkVars(HttpServletRequest request) {
		if(request.getServletPath().equals(startPage)){
			// view does not make sense on this page
			view=0;
			
			// reset if not specified
			if(request.getParameter("start")==null)
				start = 0;
		}
		else if(request.getServletPath().equals(processPage)&&request.getParameter("action")==null)
			action=0;
	}
	
	public String getArticleList(int uid) {
		return "<div class='optionbox'><ul class='optionbox'><li><a href='" + processPage +
				"?action=" + UserArticle.NEW_ART + "'>Ny artikkel</a></li></ul></div>\n" +
		art.getArticleList(uid);
	}
	
	public String processAuthenticatedRequest(HttpServletRequest request, int uid, boolean admin) {
		
		checkVars(request);
		StringBuffer ret= new StringBuffer();
		
		if(action==UserArticle.LIST_ART) {
			ret.append("<h1>Artikkelliste</h1>\n");
			ret.append(getArticleList(admin?0:uid));
		}
		else if(action==UserArticle.NEW_ART) {
			ret.append("<h1>Ny artikkel</h1>\n");

			ret.append( art.createNewForm());
		}
		else if(action==UserArticle.EDIT_ART) {
			if(view>0) {
				ret.append("<p>Rediger artikkel\n</p>");
				ret.append(art.createEditForm(view));
			}
			else {
				ret.append("<p>Velg artikkel som skal redigeres</p>");
				ret.append(art.getArticleList(admin?0:uid));
			}
		} 
		else if(action == UserArticle.INSERT_ART || action == UserArticle.UPDATE_ART) {
			String topic = request.getParameter("topic");
			String ingress = request.getParameter("ingress");
			String text = request.getParameter("text");
			
			if(topic==null||topic.equals(""))
				return "<p class='error'>Topic er ikke satt</p>\n";
			if(ingress==null||ingress.equals(""))
				return "<p class='error'>Ingress er ikke satt</p>\n";
			if(text==null)
				text="";
			
			if(action==UserArticle.INSERT_ART) {
				if(art.addArticle(uid,topic,ingress,text))
					ret.append("<p class='aok'>Vellykket! Satt inn ny artikkel.</p>\n");
				else
					ret.append("<p class='error'>Det oppstod et problem når artikkelen skulle settes inn.</p>\n");
				ret.append(getArticleList(admin?0:uid));
			}
			else {
				if(view>0) {
					if(art.modifyArticle(view,topic,ingress,text))
						ret.append("<p class='aok'>Endret artikkel.</p>");
					else
						ret.append("<p class='error'>Kunne ikke endre artikkel.</p>");
					ret.append(getArticleList(admin?0:uid));
				}
			}
		}
		else if(action == UserArticle.DELETE_ART||action==UserArticle.DELETE_CONFIRM) {
			if(view>0) {
				if(action==UserArticle.DELETE_CONFIRM) {
					if(art.deleteArticle(view, admin?0:uid))
						ret.append("<p class='aok'>Slettet artikkelen.</p>\n");
					else
						ret.append("<p class='error'>Kunne ikke slette artikkelen./p>\n");
					ret.append(getArticleList(admin?0:uid));
				}
				else {
					ret.append("<p>Sikker p&aring; at du vil slette denne artikkelen? <a href='" + processPage); 
					ret.append("?action=" + UserArticle.DELETE_CONFIRM + "&amp;view="+ view+ "'>Yes</a></p>\n");
					ret.append(art.viewArticle(view,admin));
				}
			}
			else
				ret.append("<p class='error'>Ingen artikkel spesifisert til sletting.</p>\n");
		}
		else if(action==DELETE_COMMENT) {
			ret.append("<p class='error'>Feil med kommentarid</p>");
			if(request.getParameter("comid")!=null) {
				try {
					int comId = Integer.parseInt(request.getParameter("comid"));
					if(comId>0) {
						art.deleteComment(comId);
						ret.setLength(0);
						ret.append("<p class='aok'>Fjernet kommentar</p>\n");
					}
				}catch(NumberFormatException e) {}
			}
		}
		else
			return processRequest(request, admin);
		return ret.toString();
	}
	
	public String processRequest(HttpServletRequest request) {
		return processRequest(request, false);
	}
	
	public String processRequest(HttpServletRequest request, boolean admin) {
		
		checkVars(request);
		StringBuffer ret = new StringBuffer();
		
		
		if(view>0) {
			if(request.getParameter("subcom")!=null) {
				if(request.getParameter("name")!=null&&request.getParameter("comment")!=null) {
					if(!art.addComment(view, request.getParameter("name"), request.getParameter("comment")))
						ret.append("<p class='error'>En feil oppstod n&aring;r kommentar skulle legges til</p>");
				}
				else ret.append("<p class='error'>Kommentar ikke lagt til</p>");
			}
			ret.append(art.viewArticle(view,admin));
			ret.append("\n<a href='");
			ret.append(startPage);
			ret.append("?start=");
			ret.append(start);
			ret.append("'>");
			ret.append(Articles.BACK);
			ret.append("</a>\n");

			String ua =request.getHeader("user-agent"); 
			
			if(ua!=null&&(ua=ua.toLowerCase()).indexOf("bot")<0&&ua.indexOf("slurp")<0&&!admin)
				art.incrementCount(view);
			view=0;
		}
		else {
			
			String txt = art.viewArticles(start,ART_LIMIT,admin);
			if(txt!=null)
				ret.append(txt);
			else ret.append("<p class='error'>Fikk ikke valgt forespurt artikkel eller ingen " +
					"tidligere artikler</p>\n"); 	
			ret.append("<p>\n");
			
			int tStart=start-ART_LIMIT;
			if(tStart<0)
				tStart=0;
			if(start>0||txt==null) 
				ret.append("\n<a href='" + startPage + "?start=" + tStart + "'>" + Articles.BACK + "</a>\n");
			if(txt!=null)
				ret.append("\n<a href='"+ startPage + "?start=" + (start+ART_LIMIT) + "'>" + Articles.NEXT + "</a>\n");
			ret.append("</p>\n");
		}
		return ret.toString();
	}
}