package rainbownlp.analyzer.sentenceclause; import java.util.ArrayList; import java.util.HashMap; import rainbownlp.parser.DependencyLine; public class Clause implements Cloneable, Comparable<Clause>{ @Override protected Clause clone() throws CloneNotSupportedException { Clause newClause = new Clause(); newClause.clauseSubject = clauseSubject; newClause.clauseVerb = clauseVerb; newClause.clauseObject = clauseObject; newClause.clauseIObjPrep = clauseIObjPrep; newClause.conjuctedLines = conjuctedLines; newClause.isNegated = isNegated; newClause.clauseMark =clauseMark; newClause.isPleasant = isPleasant; newClause.clauseComplements = clauseComplements; newClause.complement = complement; newClause.complementOffset = complementOffset; newClause.modifierDepMap = modifierDepMap; newClause.conjuctedBut = conjuctedBut; newClause.clauseSubjStrings = clauseSubjStrings; newClause.clauseIObjs = clauseIObjs; newClause.isMarked = isMarked; newClause.adjModifierDepMap=adjModifierDepMap; //newClause.offsetMap = offsetMap; return newClause; } public ArrayList<DependencyLine> clauseSubject; ArrayList<String> clauseSubjStrings; public Verb clauseVerb; public ArrayList<SentenceObject> clauseObject; public HashMap<SentenceObject, String> clauseIObjPrep; public ArrayList<String> clauseIObjs; public ArrayList<DependencyLine> conjuctedLines; public boolean isNegated = false; public String clauseMark; public boolean isMarked = false; public boolean isPleasant = false; public ArrayList<Clause> clauseComplements; public String complement; public Integer complementOffset; public HashMap<Integer, ArrayList<String>> modifierDepMap; //public HashMap<Integer, String> offsetMap; public boolean conjuctedBut = false; public Clause governer; public HashMap<Integer, ArrayList<String>> adjModifierDepMap; public Clause() { clauseSubject = new ArrayList<DependencyLine>(); clauseVerb = new Verb(); clauseObject = new ArrayList<SentenceObject> (); clauseIObjPrep = new HashMap<SentenceObject, String>(); clauseIObjs = new ArrayList<String>(); conjuctedLines = new ArrayList<DependencyLine>(); //E.g. since, if clauseMark = new String(); clauseComplements = new ArrayList<Clause>(); complement = new String(); complementOffset = -1; modifierDepMap = new HashMap<Integer, ArrayList<String>>(); adjModifierDepMap = new HashMap<Integer, ArrayList<String>>(); clauseSubjStrings = null; //offsetMap = new HashMap<Integer, String>(); } public ArrayList<String> getClauseSubjStrings() { if (clauseSubjStrings ==null) { clauseSubjStrings = new ArrayList<String>(); for (DependencyLine sbj_dep:clauseSubject) { clauseSubjStrings.add(sbj_dep.secondPart.toLowerCase()); } } return clauseSubjStrings; } public boolean subjFirstPerson() { boolean is_first_person = false; ArrayList<String> subjs_strings = getClauseSubjStrings(); if(subjs_strings.contains("I") || subjs_strings.contains("i")) { is_first_person = true; } return is_first_person; } @Override public int compareTo(Clause o) { return 0; } }