You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2015/02/19 19:06:17 UTC

svn commit: r1660963 [1/19] - in /ctakes/sandbox/timelanes: META-INF/ edu/ edu/mayo/ edu/mayo/bmi/ edu/mayo/bmi/annotation/ edu/mayo/bmi/annotation/knowtator/ org/ org/chboston/ org/chboston/cnlp/ org/chboston/cnlp/anafora/ org/chboston/cnlp/anafora/an...

Author: seanfinan
Date: Thu Feb 19 18:06:13 2015
New Revision: 1660963

URL: http://svn.apache.org/r1660963
Log:
initial checkin of timelanes tool

Added:
    ctakes/sandbox/timelanes/META-INF/
    ctakes/sandbox/timelanes/META-INF/MANIFEST.MF
    ctakes/sandbox/timelanes/edu/
    ctakes/sandbox/timelanes/edu/mayo/
    ctakes/sandbox/timelanes/edu/mayo/bmi/
    ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/
    ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/
    ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java
    ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java
    ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorProject.java
    ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/LocalSpan.java
    ctakes/sandbox/timelanes/org/
    ctakes/sandbox/timelanes/org/chboston/
    ctakes/sandbox/timelanes/org/chboston/cnlp/
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaEntitySegregator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaRelationSegregator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaTag.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaXmlParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaXmlWriter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/FileSelectionPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/FontResizeSlider.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/GlobalHotkeyManager.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/LinkedScrollBarHandler.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/MultiSizeCheckBox.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/MultiSizeLabel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/PartialEtchedBorder.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/PositioningSplitPane.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/RedirectTextArea.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/SmoothTipList.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/SmoothToolTip.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/SmoothToolTipUI.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/StandardRedirectUI.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalCheckBoxUI.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalLabelUI.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalMimicLayout.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalMimicPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/ZoomSlider.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorEvent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorLabel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorListener.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorProducer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/DefaultTlinkTypeStore.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TLinkTypeArray3.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TimeRelationConstants.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TlinkType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TlinkTypeStore.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/
    ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/
    ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/
    ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/AnnotationTypeSegregator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/KnowtatorTextSourceParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/KnowtatorXmlParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/Annotation.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/AnnotationInfoPrinter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/AnnotationSpanComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/AnnotationTextComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/DefaultAnnotation.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/AnnotationStore.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/AnnotationStoreFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/DefaultAnnotationStore.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/ImmutableAnnotationStore.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/Attribute.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeComparatorFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeTypeFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeUtil.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeValue.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/CreatorAttributeValue.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/CustomAttributeType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/DefaultAttribute.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/DefinedAttributeType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/EventAttributeValue.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/TlinkAttributeValue.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/UnknownAttributeType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/ClassType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/ClassTypeFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/CustomClassType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/ModifierClassType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/SemanticClassType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/TemporalClassType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/UnknownClassType.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceChain.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceChainComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceChainSpanComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceCollection.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/DefaultEntityChain.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/EntityIdCollection.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/EntityIdStore.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/UniqueEntityIdStore.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/entity/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/entity/DefaultEntity.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/entity/Entity.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/event/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/event/DocTimeRel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/gui/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/gui/EntityCollectionTableModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/gui/EventDetailsTableModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/AbstractAnnotationXmlParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/AbstractAnnotationsParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/AnnotationsParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/relation/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/relation/DefaultRelation.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/relation/Relation.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/AbstractTextSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/DefaultDiscontiguousTextSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/DefaultTextSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/DiscontiguousTextSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/EntityTextSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/RelationTextSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/TextSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/TextSpanComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/AnnotatedNote.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/DefaultNote.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/Note.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/ArrayListMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/CollectionMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/HashSetMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/SetMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/ArrayListMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/CollectionCreator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/CollectionCreatorFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/CollectionMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/DefaultCollectionMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/EnumSetMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/HashSetMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/ImmutableCollectionMap.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/parser/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/parser/AtParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/parser/StringDateParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/debug/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/debug/InfoPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/debug/TimeSpanTreeModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/eventSelection/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/eventSelection/EventSelectionEvent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/eventSelection/EventSelectionListener.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/TextHighlightPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/calendar/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/calendar/JTimelineCalendar.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/corpus/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/corpus/NoteListRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/corpus/NoteNavigator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/EventColor.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/EventHtmlFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/EventStatus.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/SemanticShape.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/TlinkComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListElement.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListRenderer2.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListRenderer3.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/AsteriskPainter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/DashUnderliner.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/DashWaveUnderliner.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/EventCellRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/FillPainter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/HighlightPainter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/TrianglePainter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/TwoUnderliner.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/UnderlinePainter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/WaveUnderliner.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/list/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/list/AbstractAnnotationCellRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/list/AnnotationCellRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/EventLegendPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/EventLegendPanel2.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/MainTimelinePanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/MainTimelinePanel2.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/PatientInfoPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/TimelineMain.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/misc/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/misc/TimeVisOptionPane.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClip.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClipAnaforaWriter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClipLoader.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClipSaver.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaToAnafora.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QuestionClipper.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/SimpleTimelineWriter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/TimelineAnaforaWriter1.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/TimelineAnaforaWriter5.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/AbstractQaRadioPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/ClipperMainPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/OrderColorFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/OrderHighlightPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaClipComponent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaClipListList.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaClipListModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaConfidencePanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaDifficultyPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaDocTimeRelPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/TableTextHighlightPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/TextClipsTable.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/TextClipsTableModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/query/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/query/QueryPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/query/QueryUtil.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/RelationCellRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/RelationColor.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/RelationListModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/RelationListRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/RelationListRenderer2.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/search/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/search/TimelineSearchPanel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/search/TimelineSearchUtil.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/spiral/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/spiral/JSpiralBar.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/spiral/TimeZoomSlider.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/AbstractTimelineComponent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/JTimelineComponent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/TimelineComponent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/SemanticTimelinesStack.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/TimelineStack.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/icon/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/icon/edit-delete-6_12.png   (with props)
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/AbstractTimelineUI.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/BasicTimelineUI.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/TimelineUI.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/TimeSpanDrawUtil.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/TimeSpanSelectionEvent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/TimeSpanSelectionListener.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/list/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/list/TimeSpanCellRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/AbstractTimeSpanRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/DefaultRelationRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/DefaultRelationRenderer2.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/DefaultTimeSpanRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/TimeSpanRenderer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/DefaultTimeSpanSelectionModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/SelectionForwarder.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/TimeSpanSelectionEvent.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/TimeSpanSelectionListener.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/TimeSpanSelectionModel.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/SpiralBarUIDelegate.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/SpiralBarUtil.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/SpiralledScrollPaneLayout.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/TimelineDrawUtil.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/CompoundTimeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/DefaultTimeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/EventTextTimeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/MutableTimeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/SectionedTimeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/SemanticTypeTimeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/Timeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/TimelineFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/AbstractTimeSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/CalendarUtil.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/DefaultTimeSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/EndPointer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/TimeSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/TimeSpanComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/PointedTimeSpan.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/PointedTimeline.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeEndPoint.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanFactory.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanLengthComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanPlus.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanPlusComparator.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/todo.txt
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/CuiPrinter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/GoldSerializer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/SimpleStoreWriter.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/
    ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/XmiEolFixer.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/parser/
    ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/parser/UimaXmiParser.java
    ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/parser/XmiEntitySegregator.java

Added: ctakes/sandbox/timelanes/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/ctakes/sandbox/timelanes/META-INF/MANIFEST.MF?rev=1660963&view=auto
==============================================================================
--- ctakes/sandbox/timelanes/META-INF/MANIFEST.MF (added)
+++ ctakes/sandbox/timelanes/META-INF/MANIFEST.MF Thu Feb 19 18:06:13 2015
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Class-Path: junit-4.10.jar jcip-annotations.jar junit-4.10.jar jcip-an
+ notations.jar junit-4.10.jar jcip-annotations.jar junit-4.10.jar jcip
+ -annotations.jar lax.jar jdom.jar protege.jar knowtator.jar junit-4.1
+ 0.jar looks-2.1.3.jar log4j-1.2.14.jar unicode_panel.jar jcip-annotat
+ ions.jar junit-4.10.jar jcip-annotations.jar jchronic-0.2.6.jar
+Main-Class: org.chboston.cnlp.timeline.gui.main.TimelineMain
+

Added: ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java
URL: http://svn.apache.org/viewvc/ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java?rev=1660963&view=auto
==============================================================================
--- ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java (added)
+++ ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java Thu Feb 19 18:06:13 2015
@@ -0,0 +1,434 @@
+package edu.mayo.bmi.annotation.knowtator;
+
+import edu.stanford.smi.protege.model.SimpleInstance;
+import edu.stanford.smi.protege.model.Slot;
+import edu.uchsc.ccp.knowtator.Span;
+import edu.uchsc.ccp.knowtator.textsource.TextSource;
+import edu.uchsc.ccp.knowtator.textsource.TextSourceAccessException;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Assumption:
+ * 1) There is always only one root(mention)
+ * 2) Root(mention) may not be present in which case, this app creates a place holder.
+ * This happens because of the way neuroradiology knowtator model was designed.
+ *
+ * @author M039575
+ */
+
+public class ExtractKnowtatorMetaData extends KnowtatorProject {
+   public static String END_OF_RECORD = "\n";
+   public static String FIELD_DEL = "|";
+
+   public ExtractKnowtatorMetaData( String protegeProjectFile, String textSourceDirectory )
+         throws TextSourceAccessException, IOException {
+      super( protegeProjectFile, textSourceDirectory );
+   }
+
+   public void processDoc( TextSource ts ) {
+      KnowtatorAnnotation someParent;
+
+      initForNewDoc( ts.getName() );
+
+      docAnnotations = annotationUtil.getAnnotations( ts );
+      Iterator itr = docAnnotations.iterator();
+
+      //cycle through annotations for the text source
+      while ( itr.hasNext() ) {
+         SimpleInstance annotation = (SimpleInstance)itr.next();
+
+         if ( annotationUtil.isAnnotation( annotation ) ) {
+            //System.out.println("Annotator :"+ getAnnotator(annotation));
+            //TODO: need to ignore annotations with comment = "x"
+            //System.out.println("Comment :"+ getComment(annotation));
+
+            //process only those which have mentions and specific classes
+            if ( !hasMention( annotation ) || !isValidClass( getMention( annotation ) ) ) {
+               continue;
+            }
+            //      skip docs
+            //        processedRec = true;
+
+            SimpleInstance mention = getMention( annotation );
+
+            if ( isRootType( mention ) ) {
+               createRoot( mention );
+               someParent = ka;
+            } else {
+               /**
+                * Since this is not root, we may or may not have a root,
+                * so for now create a placeholder
+                */
+               createRootPlaceHolder();
+
+               /*handle current mention and send it to processRelatedMentions*/
+               someParent = processMention( mention, ka );
+
+               /*process the sentence and add it to the root no children*/
+               if ( isSentenceClass( mention ) ) {
+                  continue;
+               }
+            }
+
+            processRelatedMentions( mention, someParent );
+         }
+      }
+
+   }
+
+
+   private boolean isStatusDescendantsPrintProcessed( KnowtatorAnnotation ann ) {
+      KnowtatorAnnotation statusAnn = ann.getAncestorByType( KnowtatorAnnotation.TYPE_STATUS );
+
+      //have not reached tumor or tumor's descendant
+      if ( statusAnn == null ) {
+         return false;
+      }
+
+      //check to see if all the descendants are processed
+      return statusAnn.getAllDescendantsPrintProcessed();
+   }
+
+   private boolean isTumorSubjectDescendantsPrintProcessed( KnowtatorAnnotation ann ) {
+      KnowtatorAnnotation tumorAnn = ann.getAncestorByType( KnowtatorAnnotation.TYPE_TUMOR );
+
+      //have not reached tumor or tumor's descendant
+      if ( tumorAnn == null ) {
+         return false;
+      }
+
+      //check to see if all the descendants are processed
+      return tumorAnn.getChildrenPrintProcessedByType( KnowtatorAnnotation.TYPE_SUBJECT );
+   }
+
+   private boolean hasChildrenOfType( KnowtatorAnnotation ann, int type ) {
+      return (ann.getDescendantsByType( type ).size() > 0);
+   }
+
+
+   //-- private helper methods -----
+
+   /**
+    * checks if the SimpleInstance is the root
+    */
+   private boolean isRootType( SimpleInstance mention ) {
+      String className = getMentionClsName( mention );
+      int knowType = KnowtatorAnnotation.getType( className );
+
+      if ( knowType == KnowtatorAnnotation.ROOT_CLASS_ID ) {
+         return true;
+      }
+
+      return false;
+   }
+
+   /**
+    * helper to create a root for the mention
+    */
+   private boolean createRoot( SimpleInstance mention ) {
+      if ( !isRootType( mention ) ) //safety
+      {
+         return false;
+      }
+
+      /**
+       * This is the first time we have come across this mention or
+       * there was a place holder
+       */
+      int knowType = KnowtatorAnnotation.getType( getMentionClsName( mention ) );
+
+      if ( ka == null ) {
+         /** parent is null for root element **/
+         ka = KnowtatorAnnotation.factory( getInstanceId( mention ), knowType, null );
+         //System.out.println("Creating root for ["+getMentionClsName(mention)+"]");
+      } else if ( ka.getId() == null ) {
+         //      System.out.println("setting root details ["+getMentionClsName(mention)+"]");
+         ka.setId( getInstanceId( mention ) );
+         ka.setType( knowType );
+         ka.setText( mention.getBrowserText() );
+         addAllSpans( ka, mention );
+      }
+      /**
+       * we have already processed this or similar instance
+       */
+      else {
+         String newInstId = getInstanceId( mention );
+         if ( !newInstId.equals( ka.getId() ) ) {
+            System.err.println( "Error: Doc[" + docId + "] had to roots 1.[" + ka.getId() + "] 2.[" + newInstId + "]" );
+            return false;
+         }
+      }
+
+      return true;
+   }
+
+   /**
+    * When this will be used? - If the mention encountered first is not root
+    * this method will be used.
+    * <p/>
+    * Creates an empty Root instance so that children could be added.
+    */
+   private void createRootPlaceHolder() {
+      /*Root was possibly already created*/
+      if ( ka != null ) {
+         return;
+      }
+
+      /* that is if(ka == null) */
+      ka = KnowtatorAnnotation.factory( null, KnowtatorAnnotation.TYPE_UNKNOWN, null );
+   }
+
+   /**
+    * Parents or root you want to process
+    */
+   private boolean isValidClass( SimpleInstance mention ) {
+      if ( isConclusionClass( mention ) || isTumorClass( mention ) || isSentenceClass( mention ) ) {
+         return true;
+      }
+      return false;
+   }
+
+   private boolean isSentenceClass( SimpleInstance mention ) {
+      String className = getMentionClsName( mention );
+      if ( className.equals( KnowtatorAnnotation.CLASS_SENTENCE ) ) {
+         return true;
+      }
+      return false;
+   }
+
+   private boolean isConclusionClass( SimpleInstance mention ) {
+      String className = getMentionClsName( mention );
+      if ( className.equals( KnowtatorAnnotation.CLASS_CONCLUSION ) ) {
+         return true;
+      }
+      return false;
+   }
+
+   private boolean isTumorClass( SimpleInstance mention ) {
+      String className = getMentionClsName( mention );
+      if ( className.equals( KnowtatorAnnotation.CLASS_TUMOR ) ) {
+         return true;
+      }
+      return false;
+   }
+
+   /**
+    * Process just the mention that is passed and add it to the parentAnnotation
+    *
+    * @param mention
+    * @param parentAnn
+    */
+   private KnowtatorAnnotation processMention( SimpleInstance mention, KnowtatorAnnotation parentAnn ) {
+      String mentionId = getInstanceId( mention );
+      KnowtatorAnnotation localAnn = KnowtatorAnnotation.findInstance( ka, mentionId );
+
+      if ( localAnn == null ) {
+         /** create instance for the current mentionChild **/
+         int knowType = KnowtatorAnnotation.getType( getMentionClsName( mention ) );
+         //      System.out.println("Creating Instance for ["+getMentionClsName(mention)+"]["+mentionId+"]");
+         localAnn = KnowtatorAnnotation.factory( mentionId, knowType, parentAnn );
+         localAnn.setText( mention.getBrowserText() );
+         addAllSpans( localAnn, mention );
+      } else {
+         /**
+          * found an existing instance, so, assign parent safely
+          */
+         localAnn
+               .setParentObject( parentAnn ); //TODO:actually this should not be required, re-check and delete else part
+      }
+
+      /** add as child **/
+      if ( parentAnn != null ) {
+         parentAnn.addChild( localAnn );
+      }
+
+      return localAnn;
+   }
+
+   /**
+    * @param mention
+    * @param parentAnn
+    */
+   private void processRelatedMentions( SimpleInstance mention, KnowtatorAnnotation parentAnn ) {
+      List mentions = mentionUtil.getRelatedMentions( mention );
+
+      for ( int i = 0; i < mentions.size(); i++ ) {
+         KnowtatorAnnotation localAnn = null;
+         SimpleInstance mentionChild = (SimpleInstance)mentions.get( i );
+
+         /** create instance for the current mentionChild **/
+         //      int knowType = KnowtatorAnnotation.getType(getMentionClsName(mentionChild));
+         //      //System.out.println("Creating Instance for ["+getMentionClsName(mentionChild)+"]");
+         //      localAnn = KnowtatorAnnotation.factory(getInstanceId(mentionChild), knowType, parentAnn);
+         //      localAnn.setText(mentionChild.getBrowserText());
+         //      addAllSpans(localAnn, mentionChild);
+         //
+         //      if(parentAnn != null)
+         //        parentAnn.addChild(localAnn);
+
+         localAnn = processMention( mentionChild, parentAnn );
+         /* Since arrived here from parent, set the relation*/
+         localAnn.setParentRelated();
+
+         /**
+          * process all available simple slots
+          */
+
+         //      if (mentionUtil.isSimpleSlotMention(mentionChild))
+         if ( hasSimpleSlotMentions( mentionChild ) ) {
+            //        processSimpleSlotChildren(mention, parentAnn);
+            processSimpleSlotChildren( mentionChild, localAnn );
+         }
+
+         /**
+          * recursively process children - specifically only complex slots (children)
+          */
+         if ( hasComplexSlotMentions( mentionChild ) ) {
+            processRelatedMentions( mentionChild, localAnn );
+         }
+      }
+   }
+
+
+   /**
+    * Process simple slot for a given mention of an annotation
+    *
+    * @param mention
+    */
+
+   private void processSimpleSlotChildren( SimpleInstance mention, KnowtatorAnnotation ann ) {
+      List slotMentions = mentionUtil.getSlotMentions( mention );
+      for ( int k = 0; k < slotMentions.size(); k++ ) {
+         SimpleInstance slotMention = (SimpleInstance)slotMentions.get( k );
+
+         List slotValues = mentionUtil.getSlotMentionValues( slotMention );
+         for ( int sv = 0; sv < slotValues.size(); sv++ ) {
+            if ( mentionUtil.isComplexSlotMention( slotMention ) ) {
+               continue;
+            }
+
+            Slot slot = mentionUtil.getSlotMentionSlot( slotMention );
+            String slotName = slot.getName();
+            //        System.out.println("\t\tSlot:"+slotName);
+
+            Object slotValue = slotValues.get( sv );
+            //        System.out.println("\t\tSlot:"+slotName +"Value:"+slotValue);
+
+            ann.addAttribute( slotName, String.valueOf( slotValue ) );
+         }
+      }
+   }
+
+   private boolean hasAnySlotMentions( SimpleInstance mention ) {
+      return (hasSimpleSlotMentions( mention ) || hasComplexSlotMentions( mention ));
+   }
+
+   /**
+    * helper method to check if a mention has simple slotMentions
+    */
+
+   private boolean hasSimpleSlotMentions( SimpleInstance mention ) {
+      List slotMentions = mentionUtil.getSlotMentions( mention );
+      for ( int k = 0; k < slotMentions.size(); k++ ) {
+         SimpleInstance slotMention = (SimpleInstance)slotMentions.get( k );
+         if ( mentionUtil.isSimpleSlotMention( slotMention ) ) {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   /**
+    * helper method to check if a mention has complex slotMentions
+    */
+
+   private boolean hasComplexSlotMentions( SimpleInstance mention ) {
+      List slotMentions = mentionUtil.getSlotMentions( mention );
+      for ( int k = 0; k < slotMentions.size(); k++ ) {
+         SimpleInstance slotMention = (SimpleInstance)slotMentions.get( k );
+         if ( mentionUtil.isComplexSlotMention( slotMention ) ) {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   private boolean hasMention( SimpleInstance annotation ) {
+      return (annotationUtil.getMention( annotation ) != null);
+   }
+
+   private String flattenSpans( List spans ) {
+      StringBuffer flatSpans = new StringBuffer();
+
+      for ( int i = 0; i < spans.size(); i++ ) {
+         if ( i > 0 ) {
+            flatSpans.append( ";" );
+         }
+
+         Span s = (Span)spans.get( i );
+         //      flatSpans.append(s.getStart());
+         //      flatSpans.append(",");
+         //      flatSpans.append(s.getEnd());
+         flatSpans.append( s.toString() );
+      }
+
+      return flatSpans.toString();
+   }
+
+   public void processDocs()
+         throws TextSourceAccessException {
+      //    int ctr = 0;
+
+      while ( hasNextDoc() ) {
+         next();
+
+         //skip docs
+         //      if(++ctr < 3) continue;
+
+         TextSource ts = getNextTextSource();
+
+         processDoc( ts );
+         //if (ctr ==3) break;
+      }
+   }
+
+   public static void main( String[] args ) {
+      String protegeProjectFile = args[ 0 ]; //"C:\\vinod\\neuroradiology\\knowtator\\Neuroradiology.pprj"
+      String annotatorName = args[ 1 ]; //"Neuroradiology2_Instance_0"
+
+      /**
+       * 3rd param or param with idx 2
+       * 1)"C:\\vinod\\neuroradiology\\text\\RadiologyReportsAsLines.txt"
+       * 2)"C:\\vinod\\neuroradiology\\text\\files\\"
+       */
+
+      String textSourceDirectory = args[ 2 ];
+
+      try {
+         ExtractKnowtatorMetaData utka = new ExtractKnowtatorMetaData( protegeProjectFile, textSourceDirectory );
+         utka.processDocs();
+      } catch ( TextSourceAccessException tse ) {
+         System.out.println( tse.getMessage() );
+      } catch ( IOException ioe ) {
+         System.out.println( ioe.getMessage() );
+      }
+
+   }
+
+   private void initForNewDoc( String docId ) {
+      this.docId = docId;
+      ka = null;
+
+   }
+
+   //-- private data members ----
+
+   private String docId = null;
+
+   protected KnowtatorAnnotation ka; //represents a conclusion either valid or null(when no conclusion)
+   protected Collection docAnnotations; //annotations related to the current textSource
+}

Added: ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java
URL: http://svn.apache.org/viewvc/ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java?rev=1660963&view=auto
==============================================================================
--- ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java (added)
+++ ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java Thu Feb 19 18:06:13 2015
@@ -0,0 +1,678 @@
+package edu.mayo.bmi.annotation.knowtator;
+
+
+import edu.stanford.smi.protege.model.SimpleInstance;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * @author M039575
+ */
+public class KnowtatorAnnotation implements Serializable {
+   //TODO: need to merger these class names and knowtatorAnnotation constants
+   public static String CLASS_SENTENCE = "SentenceAnnotation";
+   public static String CLASS_TOKEN = "TokenAnnotation";
+
+   public static String CLASS_TUMOR = "Tumor";
+   public static String CLASS_CONCLUSION = "Conclusion";
+   public static String CLASS_SUBJECT = "Subject";
+   public static String CLASS_STATUS_OF_TUMOR = "Status of tumor";
+   public static String CLASS_MAGNITUDE_OF_CHANGE = "Magnitude of change";
+   public static String CLASS_SIGNIFICANCE_OF_CHANGE = "Significance of change";
+
+   public static String ROOT_CLASS_NAME = "Conclusion";
+   public static int ROOT_CLASS_ID = KnowtatorAnnotation.TYPE_CONCLUSION;
+
+   public static int TYPE_CONCLUSION = 1;
+   public static int TYPE_TUMOR = 2;
+   public static int TYPE_STATUS = 3;
+   public static int TYPE_SUBJECT = 4;
+   public static int TYPE_MAGNITUDE = 5;
+   public static int TYPE_SIGNIFICANCE = 6;
+   public static int TYPE_SENTENCE = 7;
+   public static int TYPE_TOKEN = 8;
+   public static int TYPE_UNKNOWN = -1;
+
+   public static String TYPE_NAME_CONCLUSION = "Conclusion";
+   public static String TYPE_NAME_TUMOR = "Tumor";
+   public static String TYPE_NAME_STATUS = "Status";
+   public static String TYPE_NAME_SUBJECT = "Subject";
+   public static String TYPE_NAME_MAGNITUDE = "Magnitude";
+   public static String TYPE_NAME_SIGNIFICANCE = "Significance";
+   public static String TYPE_NAME_SENTENCE = "SentenceAnnotation";
+   public static String TYPE_NAME_MAGNIFICANCE = "Magnificance";
+   public static String TYPE_NAME_UNKNOWN = "Unknown";
+
+   public static String ATTR_STATUS_OF_TUMOR = "status_of_tumor_";
+   public static String ATTR_MAGN_OF_CHANGE = "magnitude_of_change_";
+   public static String ATTR_SIGN_OF_CHANGE = "significance_of_change_";
+
+   /**
+    * default constructor
+    * Note: Use this constructor AND it is YOUR responsibility to set
+    * the required attributes OR just use factory method
+    */
+   public KnowtatorAnnotation() {
+      parent = null;
+      printProcessed = false;
+
+      children = new ArrayList();
+      attrMap = new HashMap();
+      spans = new ArrayList();
+   }
+
+   /**
+    * factory method
+    */
+
+   public static KnowtatorAnnotation factory( String id, int type, KnowtatorAnnotation parent ) {
+      KnowtatorAnnotation ka = new KnowtatorAnnotation();
+      ka.setId( id );
+      ka.setType( type );
+      ka.setParentObject( parent );
+
+      return ka;
+   }
+
+   private void setClsName( String s ) {
+      clsName = s;
+   }
+
+   public String getClsName() {
+      return clsName;
+   }
+
+
+   public static String DISORDER_CLS = "Disorder";
+   public static String PROC_CLS = "Procedure mention";
+   public static String SS_CLS = "Sign or Symptom";
+   public static String DRUG_CLS = "Drug mention";
+
+
+   //private String status = "";
+   //private String statusModelStatusValue = "";
+   private String cui;
+   private String possible;
+   private String famHx;
+   private String hx;
+   private String current;
+   private boolean negated;
+
+   public boolean getNegated() {
+      return negated;
+   }
+
+   public String getCui() {
+      return cui;
+   }
+
+   public String getPossible() {
+      return possible;
+   }
+
+   public String getFamilyHistoryOf() {
+      return famHx;
+   }
+
+   public String getHistoryOf() {
+      return hx;
+   }
+
+   public String getCurrent() {
+      return current;
+   }
+
+
+   public static KnowtatorAnnotation factory(
+         String id,
+         int type,
+         String clsName,
+         KnowtatorAnnotation parent,
+         String cui,
+         String possible,
+         String famHx,
+         String hx,
+         String current,
+         boolean negated
+   ) {
+      KnowtatorAnnotation ka = new KnowtatorAnnotation();
+      ka.setId( id );
+      ka.setType( type );
+      ka.setParentObject( parent );
+      ka.setClsName( clsName );
+      ka.cui = cui;
+      ka.possible = possible;
+      ka.famHx = famHx;
+      ka.hx = hx;
+      ka.current = current;
+      ka.negated = negated;
+      //ka.statusModelStatusValue = statusModelStatusValue;
+
+      return ka;
+   }
+
+   public static KnowtatorAnnotation factoryNullParent() {
+      KnowtatorAnnotation ka = new KnowtatorAnnotation();
+      ka.setId( null );
+      ka.setType( TYPE_CONCLUSION );
+      return ka;
+   }
+
+   public static int getType( String className ) {
+      if ( className == null ) {
+         return TYPE_UNKNOWN;
+      }
+      if ( className.equals( CLASS_CONCLUSION ) ) {
+         return TYPE_CONCLUSION;
+      } else if ( className.equals( CLASS_TUMOR ) ) {
+         return TYPE_TUMOR;
+      } else if ( className.equals( CLASS_SUBJECT ) ) {
+         return TYPE_SUBJECT;
+      } else if ( className.equals( CLASS_STATUS_OF_TUMOR ) ) {
+         return TYPE_STATUS;
+      } else if ( className.equals( CLASS_MAGNITUDE_OF_CHANGE ) ) {
+         return TYPE_MAGNITUDE;
+      } else if ( className.equals( CLASS_SIGNIFICANCE_OF_CHANGE ) ) {
+         return TYPE_SIGNIFICANCE;
+      } else if ( className.equals( CLASS_SENTENCE ) ) {
+         return TYPE_SENTENCE;
+      } else if ( className.equals( CLASS_TOKEN ) ) {
+         return TYPE_TOKEN;
+      }
+      return TYPE_UNKNOWN;
+   }
+
+   /**
+    * look for an instance with the given id among the startingPoint and all its descendants
+    *
+    * @param startingPoint
+    * @param id
+    * @return
+    */
+   public static KnowtatorAnnotation findInstance( KnowtatorAnnotation startingPoint, String id ) {
+      if ( startingPoint == null || !startingPoint.hasChildren() ) //parent not valid or no children
+      {
+         return null;
+      }
+
+      if ( startingPoint.getId() == id ) {
+         return startingPoint;
+      }
+
+      return startingPoint.findInstance( startingPoint.getChildren(), id );
+   }
+
+   /**
+    * helper method to find instance
+    *
+    * @return
+    */
+   private KnowtatorAnnotation findInstance( List children, String id ) {
+      for ( int i = 0; i < children.size(); i++ ) {
+         KnowtatorAnnotation ka = (KnowtatorAnnotation)children.get( i );
+         if ( ka.getId().equals( id ) ) {
+            return ka;
+         }
+
+         if ( ka.hasChildren() ) {
+            ka.findInstance( ka.getChildren(), id );
+         }
+      }
+      return null;
+   }
+
+   //-- primary public methods ----------
+   public int getNumberOfSpans() {
+      return spans.size();
+   }
+
+   public String getSpanString() {
+      StringBuffer sb = new StringBuffer();
+
+      sb.append( "\"" );
+      for ( int i = 0; i < spans.size(); i++ ) {
+         if ( i > 0 ) {
+            sb.append( "," );
+         }
+
+         LocalSpan s = (LocalSpan)spans.get( i );
+         sb.append( s.begin );
+      }
+      sb.append( "\"" );
+      sb.append( ExtractKnowtatorMetaData.FIELD_DEL );
+      sb.append( "\"" );
+      for ( int i = 0; i < spans.size(); i++ ) {
+         if ( i > 0 ) {
+            sb.append( "," );
+         }
+
+         LocalSpan s = (LocalSpan)spans.get( i );
+         sb.append( s.end );
+      }
+      sb.append( "\"" );
+
+      return sb.toString();
+   }
+
+   public String toString() {
+      String s = "cui=" + cui + " negated=" + negated +
+                 " smallest begin=" + getBegin() + "  largest end=" + getEnd();
+
+      s = s + "  coveredText=" + text + "  clsName=" + clsName;
+
+      s = s + " possible=" + possible +
+          " famHx=" + famHx +
+          " hx=" + hx +
+          " current=" + current;
+
+      return s;
+   }
+
+   public String getTypeName() {
+      if ( type == TYPE_CONCLUSION ) {
+         return TYPE_NAME_CONCLUSION;
+      }
+      if ( type == TYPE_TUMOR ) {
+         return TYPE_NAME_TUMOR;
+      }
+      if ( type == TYPE_STATUS ) {
+         return TYPE_NAME_STATUS;
+      }
+      if ( type == TYPE_SUBJECT ) {
+         return TYPE_NAME_SUBJECT;
+      }
+      if ( type == TYPE_MAGNITUDE ) {
+         return TYPE_NAME_MAGNITUDE;
+      }
+      if ( type == TYPE_SIGNIFICANCE ) {
+         return TYPE_NAME_SIGNIFICANCE;
+      }
+
+      return TYPE_NAME_UNKNOWN;
+   }
+
+   public boolean getPrintProcessed() {
+      return printProcessed;
+   }
+
+   public void setPrintProcessed() {
+      printProcessed = true;
+   }
+
+   public boolean getParentRelated() {
+      return parentRelated;
+   }
+
+   public void setParentRelated() {
+      parentRelated = true;
+   }
+
+   /**
+    * use this to store comples slots which represents an annotation
+    */
+   public void addChild( KnowtatorAnnotation ka ) {
+      boolean dontAdd = false;
+
+      for ( int i = 0; i < children.size(); i++ ) {
+         KnowtatorAnnotation ele = (KnowtatorAnnotation)children.get( i );
+         if ( ele.getId().equals( ka.getId() ) ) {
+            dontAdd = true;
+            break;
+         }
+      }
+
+      //dont add was not set so we did not find it.
+      if ( !dontAdd ) {
+         children.add( ka );
+      }
+   }
+
+   public boolean hasChildren() {
+      return (children.size() > 0);
+   }
+
+   //  public void setParentIfNone(KnowtatorAnnotation ka)
+   //  {
+   //    if(ka != null && parentId == null)
+   //    {
+   //      parentId = ka.getId();
+   //      parentType = ka.getType();
+   //    }
+   //  }
+
+   //  public void setParent(KnowtatorAnnotation ka)
+   //  {
+   //    if(ka != null)
+   //    {
+   //      parentId = ka.getId();
+   //      parentType = ka.getType();
+   //    }
+   //    else
+   //    {
+   //      parentId = null;
+   //      parentType = TYPE_UNKNOWN;
+   //    }
+   //  }
+
+   public void setParentObject( KnowtatorAnnotation ka ) {
+      parent = ka;
+   }
+
+   public KnowtatorAnnotation getParentObject() {
+      return parent;
+   }
+
+   public String getParentId() {
+      return parent.getId();
+   }
+
+   public int getParentType() {
+      return parent.getType();
+   }
+
+   public List getDescendantsByType( int type ) {
+      List l = new ArrayList();
+      if ( children.size() == 0 ) {
+         return l;
+      }
+
+      getDescendantsByType( l, children, type );
+      return l;
+   }
+
+   public List getDescendantsByType( int type, int parentType ) {
+      List l = getDescendantsByType( type );
+      if ( children.size() == 0 ) {
+         return l;
+      }
+
+      for ( int i = l.size() - 1; i >= 0; i-- ) {
+         KnowtatorAnnotation k = (KnowtatorAnnotation)l.get( i );
+         if ( k.getParentId() == null || k.getParentType() != parentType ) {
+            l.remove( i );
+         }
+      }
+
+      return l;
+   }
+
+
+   /**
+    * @author m039575
+    * recursive method to gather children of specific type
+    */
+   private void getDescendantsByType( List l, List children, int typeParam ) {
+      for ( int i = 0; i < children.size(); i++ ) {
+         KnowtatorAnnotation knowAnn = (KnowtatorAnnotation)children.get( i );
+         if ( knowAnn.getType() == typeParam ) {
+            l.add( knowAnn );
+         }
+
+         if ( knowAnn.hasChildren() ) {
+            getDescendantsByType( l, knowAnn.getChildren(), typeParam );
+         }
+      }
+   }
+
+   /**
+    * travers the hierarchy to see if all the descendents are print processed
+    *
+    * @return
+    */
+   public boolean getAllDescendantsPrintProcessed() {
+      return getAllDescendantsPrintProcessed( this );
+   }
+
+   private boolean getAllDescendantsPrintProcessed( KnowtatorAnnotation ann ) {
+      if ( !ann.hasChildren() && ann.getPrintProcessed() ) {
+         return true;
+      }
+      /* irrespective of whether or not children present, if ann is not processed */
+      else if ( !ann.getPrintProcessed() ) {
+         return false;
+      } else if ( ann.hasChildren() ) {
+         List kids = ann.getChildren();
+         boolean kidsProcessed = true;
+
+         for ( int i = 0; i < kids.size(); i++ ) {
+            KnowtatorAnnotation knowAnn = (KnowtatorAnnotation)kids.get( i );
+            kidsProcessed = kidsProcessed && getAllDescendantsPrintProcessed( knowAnn );
+            if ( !kidsProcessed ) {
+               break;
+            }
+         }
+         return kidsProcessed;
+      } else //no children but ann is not processed
+      {
+         return false;
+      }
+   }
+
+   public boolean getChildrenPrintProcessedByType( int type ) {
+      for ( int i = 0; i < children.size(); i++ ) {
+         KnowtatorAnnotation ann = (KnowtatorAnnotation)children.get( i );
+         if ( ann.getType() == type && !ann.getPrintProcessed() ) {
+            return false;
+         }
+      }
+      return true;
+   }
+
+   /**
+    * traversers the ancestory ladder to find instance of type passed
+    *
+    * @param type
+    * @return
+    */
+   public KnowtatorAnnotation getAncestorByType( int type ) {
+      return getAncestorByType( this, type );
+   }
+
+   /**
+    * helper method to find an ancestor by type
+    *
+    * @param ann
+    * @param type
+    * @return
+    */
+   private KnowtatorAnnotation getAncestorByType( KnowtatorAnnotation ann, int type ) {
+      if ( ann != null && ann.getType() == type ) {
+         return ann;
+      } else if ( ann.getParentObject() != null ) {
+         return getAncestorByType( ann.getParentObject(), type );
+      } else {
+         return null;
+      }
+   }
+
+   /**
+    * use this to store simple slot which represents an attribute
+    *
+    * @param name
+    * @param value
+    */
+   public void addAttribute( String name, String value ) {
+      attrMap.put( name, value );
+   }
+
+   public boolean isEquivalent( KnowtatorAnnotation ka ) {
+      if ( getId() == ka.getId() ) {
+         return true;
+      }
+      return false;
+   }
+
+   /**
+    * Helps check if the param is a child of this instance
+    *
+    * @param ka
+    * @return
+    */
+   public boolean isChild( KnowtatorAnnotation ka ) {
+      for ( int i = 0; i < children.size(); i++ ) {
+         KnowtatorAnnotation localKa = (KnowtatorAnnotation)children.get( i );
+
+         if ( ka.getId() == localKa.getId() ) {
+            return true;
+         }
+      }
+
+      return false;
+   }
+
+   /**
+    * Helps check if the current annotation has one or more attributes
+    *
+    * @return
+    */
+   public boolean hasAttributes() {
+      return (attrMap.size() > 0);
+   }
+
+
+   /**
+    * Check if the passed annotation is a child, if true, return stored instance
+    *
+    * @param ka
+    * @return
+    */
+   public KnowtatorAnnotation getEquivalentChild( KnowtatorAnnotation ka ) {
+      for ( int i = 0; i < children.size(); i++ ) {
+         KnowtatorAnnotation localKa = (KnowtatorAnnotation)children.get( i );
+
+         if ( ka.getId() == localKa.getId() ) {
+            return localKa;
+         }
+      }
+
+      return null;
+   }
+
+   //-- public accessor and mutator -----
+   public String getId() {
+      return instanceId;
+   }
+
+   public Map getAttrMap() {
+      return attrMap;
+   }
+
+   public String getAttribute( String key ) {
+      if ( attrMap.containsKey( key ) ) {
+         return (String)attrMap.get( key );
+      }
+
+      return null;
+   }
+
+   public Iterator getAttributeKeyIterator() {
+      return attrMap.keySet().iterator();
+   }
+
+   public Set getAttributeKeySet() {
+      return attrMap.keySet();
+   }
+
+   public List getChildren() {
+      return children;
+   }
+
+   public int getType() {
+      return type;
+   }
+
+   public String getText() {
+      return text;
+   }
+
+   public String getCoveredText() {
+      return getText();
+   }
+
+
+   public void addSpans( SimpleInstance si ) {
+
+      int begin = 0;
+      int end = 0;
+      spans.add( new LocalSpan( begin, end ) );
+   }
+
+
+   public void addSpan( int begin, int end ) {
+      spans.add( new LocalSpan( begin, end ) );
+   }
+
+   public int getSpanBegin( int i ) {
+      if ( spans.size() > i ) {
+         return ((LocalSpan)spans.get( i )).begin;
+      }
+      return -1;
+   }
+
+   public int getSpanEnd( int i ) {
+      if ( spans.size() > i ) {
+         return ((LocalSpan)spans.get( i )).end;
+      }
+      return -1;
+   }
+
+   /**
+    * get smallest start offset of any of hte spans if this is a disjoint span
+    *
+    * @return
+    */
+   public int getBegin() {
+      int smallest = getSpanEnd( 0 ); // if no spans, -1
+      for ( int i = 0; i < spans.size(); i++ ) {
+         smallest = Math.min( smallest, getSpanBegin( i ) );
+      }
+      return smallest;
+   }
+
+   public int getEnd() {
+      int largest = getSpanEnd( 0 ); // if no spans, -1
+      for ( int i = 0; i < spans.size(); i++ ) {
+         largest = Math.max( largest, getSpanEnd( i ) );
+      }
+      return largest;
+   }
+
+   public void setText( String text ) {
+      this.text = text;
+   }
+
+   public void setType( int type ) {
+      this.type = type;
+   }
+
+   public void setId( String id ) {
+      this.instanceId = id;
+   }
+
+   //--- private methods ---------
+
+
+   public Collection getSpans() {
+      return spans;
+   }
+
+   //--- private data members -----
+   private String instanceId;
+   private int type;
+   private String text;     //text marked as coveredText'
+   private List spans;    //contains one or more spans
+   private Map attrMap;  //simple attributes or slots
+   private List children; //complex slots  or children
+   private String clsName;  // helpful when no NE typeId, such as classes of slotfiller annotations
+   //  private String  parentId;
+   //  private int     parentType;
+   private KnowtatorAnnotation parent;
+   private boolean parentRelated;
+
+   private boolean printProcessed; //experimenting: to keep track of printing process
+
+   public String getDisplayableAttrs() {
+      return "id = " + getId() + "  text = " + getText() + "  type = " + getType() + "  spans = " + getSpanString();
+   }
+}