view src/main/java/de/mpiwg/itgroup/ismi/utils/templates/AuthorTemplate.java @ 1:2e911857a759

(none)
author jurzua
date Wed, 29 Oct 2014 14:00:28 +0000
parents
children 4ec8d4cfad26
line wrap: on
line source

package de.mpiwg.itgroup.ismi.utils.templates;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.mpi.openmind.cache.WrapperService;
import org.mpi.openmind.repository.bo.Attribute;
import org.mpi.openmind.repository.bo.Entity;
import org.mpi.openmind.repository.bo.Relation;
import org.mpi.openmind.search.AbstractSearchService;
import org.mpiwg.itgroup.escidoc.ESciDocHandler;
import org.mpiwg.itgroup.escidoc.bo.Publication;

import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean;
import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;

public class AuthorTemplate extends AbstractTemplate{
	
	private static Logger logger = Logger.getLogger(AuthorTemplate.class);
	
	private static String birth_date = "birth_date";
	
	private static String lived_in = "lived_in";
	private static String has_role = "has_role";
	private static String was_student_of = "was_student_of";

	public String privacity;
	public String name;
	public String nameTranslit;
	public String bornInPlace;
	public String diedInPlace;
	public String primeAlias;
	public String notes;
	public String url;
	public List<String> aliasList;
	public List<String> roleList;
	
	public String birthDate;
	public String deathDate;

	public Map<String, String> livedInPlaceMap;
	
	public AuthorTemplate(Entity entity, WrapperService om){
		
		logger.info("Diplaying " + entity);
		
		if (entity.isLightweight()) {
			entity = om.getEntityContent(entity);
		}
		this.aliasList = new ArrayList<String>();
		this.roleList = new ArrayList<String>();
		this.livedInPlaceMap = new HashMap<String, String>();
		this.privacity = entity.getPrivacity();
		
		Attribute attName = entity.getAttributeByName("name");
		Attribute attNameTranslit = entity.getAttributeByName("name_translit");
		Attribute attNotes = entity.getAttributeByName("notes");
		Attribute attUrl = entity.getAttributeByName("url");
		this.name = (attName == null) ? null : attName.getValue();
		this.nameTranslit = (attNameTranslit == null) ? null : attNameTranslit.getValue();
		this.notes = (attNotes == null) ? null : attNotes.getValue();
		this.url = (attUrl == null) ? null : attUrl.getValue();
		
		Calendar calDeathDate = AbstractISMIBean.updateCalendar(entity.getAttributeByName("death_date"));
		this.deathDate = calDeathDate.getCalendarAsHtml();
		
		Calendar calBirthDate = AbstractISMIBean.updateCalendar(entity.getAttributeByName(birth_date));
		this.birthDate = calBirthDate.getCalendarAsHtml();
		
		//this.setCurrentId(entity.getId().toString());
		//this.loadAttributes(entity);
		
		for (Relation rel : entity.getSourceRelations()) {
			if(StringUtils.isEmpty(rel.getOwnValue()) || StringUtils.isEmpty(rel.getTargetObjectClass())){
				try {
					throw new Exception("Relation has no ownValue and/or targetObjCls " + rel);
				} catch (Exception e) {
					logger.error(e.getMessage(), e);
				}
			}else{
				Entity target = om.getEntityById(rel.getTargetId());
				if (rel.getOwnValue().equals("was_born_in")) {
					this.bornInPlace = (target == null) ? "" : target.getOwnValue();
				} else if (rel.getOwnValue().equals(lived_in)) {
					String date = (rel.getAttributeByName("date") != null) ? 
							new Calendar(rel.getAttributeByName("date").getOwnValue()).getCalendarAsHtml() : 
							"";
					this.livedInPlaceMap.put(target.getOwnValue(), date);
				} else if (rel.getOwnValue().equals(was_student_of)) {
					//this.studentOfList.add(target);
				} else if (rel.getOwnValue().equals(has_role)) {
					this.roleList.add(target.getOwnValue());
				} else if (rel.getOwnValue().equals("died_in")) {
					this.diedInPlace = (target == null) ? "" : target.getOwnValue();
				}				
			}
		}

		for (Relation rel : entity.getTargetRelations()) {
			
			if(StringUtils.isEmpty(rel.getOwnValue()) || StringUtils.isEmpty(rel.getSourceObjectClass())){
				try {
					throw new Exception("Relation has no ownValue and/or sourceObjCls " + rel);
				} catch (Exception e) {
					logger.error(e.getMessage(), e);
				}
			}else{
				if (rel.getOwnValue().equals("was_created_by") && rel.getSourceObjectClass().equals("TEXT")) {
					Entity title = om.getEntityById(rel.getSourceId());
					if(title != null && title.getObjectClass().equals("TEXT")){
						//this.titles.add(title);
						//I remove this line cause the list in this way would not be sorted.
						//this.titleItems.add(new SelectItem(title.getId().toString(), title.getOwnValue() + " [" + title.getId() + "]"));
					}
				} else if (rel.getOwnValue().equals("is_alias_name_of")) {
					Entity alias = om.getEntityById(rel.getSourceId());
					this.aliasList.add(alias.getOwnValue());
				} else if (rel.getOwnValue().equals("is_prime_alias_name_of")) {
					Entity alias = om.getEntityByIdWithContent(rel.getSourceId());
					this.primeAlias = alias.getAttributeByName("alias").getValue();
				} else if (rel.getOwnValue().equals("is_reference_of")) {
					Entity ref = om.getEntityByIdWithContent(rel.getSourceId());
					this.refEntityList.add(ref);
				}	
			}
			
		}
		this.loadRefernces();
	}
	
	public String getPrivacity() {
		return privacity;
	}
	public String getName() {
		return name;
	}
	public String getNameTranslit() {
		return nameTranslit;
	}
	public String getBornInPlace() {
		return bornInPlace;
	}
	public String getDiedInPlace() {
		return diedInPlace;
	}
	public String getPrimeAlias() {
		return primeAlias;
	}
	public String getNotes() {
		return notes;
	}
	public String getUrl() {
		return url;
	}
	public List<String> getAliasList() {
		return aliasList;
	}
	
	public String getBirthDate() {
		return birthDate;
	}
	public String getDeathDate() {
		return deathDate;
	}
	public List<String> getRoleList() {
		return roleList;
	}

	public Map<String, String> getLivedInPlaceMap() {
		return livedInPlaceMap;
	}
	
	public Collection<String> getLivedInPlaceList(){
		return livedInPlaceMap.keySet();
	}
}