
gdt.jgui.entity.edge.JEdgeFacetOpenItem Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of Graph Show documentation
Show all versions of Graph Show documentation
The graph extension for the entigrator application
The newest version!
package gdt.jgui.entity.edge;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
/*
* Copyright 2016 Alexander Imas
* This file is part of JEntigrator.
JEntigrator is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
JEntigrator is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JEntigrator. If not, see .
*/
import java.util.Properties;
import java.util.logging.Logger;
import javax.swing.JPopupMenu;
import javax.swing.tree.DefaultMutableTreeNode;
import org.apache.commons.codec.binary.Base64;
import gdt.data.entity.BaseHandler;
import gdt.data.entity.EntityHandler;
import gdt.data.entity.FacetHandler;
import gdt.data.entity.facet.ExtensionHandler;
import gdt.data.entity.EdgeHandler;
import gdt.data.grain.Core;
import gdt.data.grain.Locator;
import gdt.data.grain.Sack;
import gdt.data.store.Entigrator;
import gdt.jgui.base.JBaseNavigator;
import gdt.jgui.base.JBasesPanel;
import gdt.jgui.console.JConsoleHandler;
import gdt.jgui.console.JContext;
import gdt.jgui.console.JFacetOpenItem;
import gdt.jgui.console.JMainConsole;
import gdt.jgui.console.JRequester;
import gdt.jgui.console.WContext;
import gdt.jgui.console.WUtils;
import gdt.jgui.entity.JEntityFacetPanel;
import gdt.jgui.entity.bonddetail.JBondDetailFacetOpenItem;
import gdt.jgui.entity.fields.JFieldsFacetOpenItem;
import gdt.jgui.entity.graph.JGraphRenderer;
import gdt.jgui.entity.graph.JWebGraph;
import gdt.jgui.entity.node.JNodeFacetOpenItem;
public class JEdgeFacetOpenItem extends JFieldsFacetOpenItem implements WContext{
private static final long serialVersionUID = 1L;
private static boolean debug=false;
public static String SORT="sort";
public static String SORT_TARGET="sort target";
public static String SORT_SOURCE="sort source";
public JEdgeFacetOpenItem(){
super();
}
@Override
public String getLocator(){
Properties locator=new Properties();
locator.setProperty(Locator.LOCATOR_TITLE,"Edge");
locator.setProperty(BaseHandler.HANDLER_CLASS,JEdgeFacetOpenItem.class.getName());
locator.setProperty(BaseHandler.HANDLER_SCOPE,JConsoleHandler.CONSOLE_SCOPE);
locator.setProperty(BaseHandler.HANDLER_METHOD,METHOD_OPEN_FACET);
locator.setProperty(BaseHandler.HANDLER_LOCATION,EdgeHandler.EXTENSION_KEY);
locator.setProperty( JContext.CONTEXT_TYPE,"Edge facet");
locator.setProperty(Locator.LOCATOR_TITLE,"Edge");
locator.setProperty(FACET_HANDLER_CLASS,EdgeHandler.class.getName());
if(entityKey$!=null)
locator.setProperty(EntityHandler.ENTITY_KEY,entityKey$);
if(entihome$!=null){
locator.setProperty(Entigrator.ENTIHOME,entihome$);
//Entigrator entigrator=console.getEntigrator(entihome$);
//String icon$=Support.readHandlerIcon(JBondsPanel.class, "edge.png");
// String icon$=ExtensionHandler.loadIcon(entigrator, EdgeHandler.EXTENSION_KEY, "edge.png");
//if(icon$!=null)
// locator.setProperty(Locator.LOCATOR_ICON,icon$);
locator.setProperty(Locator.LOCATOR_ICON_CONTAINER,Locator.LOCATOR_ICON_CONTAINER_CLASS);
locator.setProperty(Locator.LOCATOR_ICON_CLASS,getClass().getName());
locator.setProperty(Locator.LOCATOR_ICON_FILE,"edge.png");
locator.setProperty(Locator.LOCATOR_CHECKABLE,Locator.LOCATOR_TRUE);
}
return Locator.toString(locator);
}
@Override
public boolean isRemovable() {
return false;
}
@Override
public String getFacetName() {
return "Edge";
}
@Override
public String getFacetIcon(Entigrator entigrator) {
return ExtensionHandler.loadIcon(entigrator,EdgeHandler.EXTENSION_KEY,"edge.png");
}
@Override
public void removeFacet() {
}
@Override
public void openFacet(JMainConsole console,String locator$) {
try{
if(debug)
System.out.println("JEdgeFacetOpenItem:openFacet:locator="+locator$);
Properties locator=Locator.toProperties(locator$);
String entihome$=locator.getProperty(Entigrator.ENTIHOME);
String entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
String responseLocator$=getLocator();
Properties responseLocator=Locator.toProperties(responseLocator$);
responseLocator.setProperty(Entigrator.ENTIHOME, entihome$);
responseLocator.setProperty(EntityHandler.ENTITY_KEY, entityKey$);
responseLocator.setProperty(BaseHandler.HANDLER_METHOD, JFacetOpenItem.METHOD_RESPONSE);
//
JEntityFacetPanel efp=new JEntityFacetPanel();
String efpLocator$=efp.getLocator();
efpLocator$=Locator.append(efpLocator$, Entigrator.ENTIHOME, entihome$);
efpLocator$=Locator.append(efpLocator$, EntityHandler.ENTITY_KEY, entityKey$);
efpLocator$=Locator.append(efpLocator$, JRequester.REQUESTER_ACTION, ACTION_DISPLAY_FACETS);
responseLocator.setProperty(JRequester.REQUESTER_RESPONSE_LOCATOR, Locator.compressText(efpLocator$));
//
responseLocator$=Locator.toString(responseLocator);
String requesterResponseLocator$=Locator.compressText(responseLocator$);
JBondsPanel bondsPanel=new JBondsPanel();
String bpLocator$=bondsPanel.getLocator();
bpLocator$=Locator.append(bpLocator$, Entigrator.ENTIHOME, entihome$);
bpLocator$=Locator.append(bpLocator$, EntityHandler.ENTITY_KEY, entityKey$);
bpLocator$=Locator.append(bpLocator$, JRequester.REQUESTER_RESPONSE_LOCATOR, requesterResponseLocator$);
bpLocator$=Locator.append(bpLocator$, BaseHandler.HANDLER_METHOD,"instantiate");
JConsoleHandler.execute(console, bpLocator$);
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
}
@Override
public String getFacetRenderer() {
return JBondsPanel.class.getName();
}
@Override
public FacetHandler getFacetHandler() {
return new EdgeHandler();
}
@Override
public JPopupMenu getPopupMenu(final String digestLocator$) {
//System.out.println("JFieldsFacetOpenItem:edit:digest locator="+Locator.remove(digestLocator$, Locator.LOCATOR_ICON));
JPopupMenu menu= super.getPopupMenu(digestLocator$);
return menu;
}
@Override
public void response(JMainConsole console, String locator$) {
// System.out.println("JAddressFacetOpenItem:responce:locator="+locator$);
super.response(console,locator$);
}
@Override
public String getFacetIconName() {
return "edge.png";
}
@Override
public String getWebView(Entigrator entigrator, String locator$) {
try{
Properties locator=Locator.toProperties(locator$);
String webHome$=locator.getProperty(WContext.WEB_HOME);
String entityLabel$=locator.getProperty(EntityHandler.ENTITY_LABEL);
String webRequester$=locator.getProperty(WContext.WEB_REQUESTER);
String sort$=locator.getProperty(SORT);
boolean sortTarget=true;
if(SORT_SOURCE.equals(sort$))
sortTarget=false;
if(debug)
System.out.println("JFieldsFacetOpenItem:web home="+webHome$+ " web requester="+webRequester$);
entityKey$=entigrator.indx_keyAtLabel(entityLabel$);
Sack entity=entigrator.getEntityAtKey(entityKey$);
String edge$=entity.getProperty("edge");
// Core[] ca=entity.elementGet("field");
StringBuffer sb=new StringBuffer();
sb.append("");
sb.append("");
sb.append("");
sb.append(WUtils.getMenuBarScript());
sb.append(WUtils.getMenuBarStyle());
//sb.append(WUtils.getJquery(entigrator));
sb.append("");
sb.append("");
sb.append(" ");
sb.append("Base: ");
sb.append(entigrator.getBaseName());
sb.append(" Entity: ");
sb.append(entityLabel$);
sb.append(" ");
sb.append("Facet: Edge
");
//sb.append("");
sb.append("Source Target ");
sb.append(getItems( webHome$,entigrator,entity,sortTarget));
sb.append("
");
sb.append("");
sb.append("");
sb.append("");
return sb.toString();
}catch(Exception e){
Logger.getLogger(JBasesPanel.class.getName()).severe(e.toString());
}
return null;
}
private String getItems(String webHome$,Entigrator entigrator,Sack entity,boolean sortTarget){
try{
if(debug)
System.out.println("JEdgeFacetOpenItem:getItems:node="+entity.getProperty("label"));
StringBuffer sb=new StringBuffer();
Core[] ca=entity.elementGet("bond");
//String edgeKey$;
if(ca!=null){
ArrayList cl=new ArrayList(Arrays.asList(ca));
if(sortTarget){
BondComparatorByValue bc=new BondComparatorByValue();
bc.entigrator=entigrator;
Collections.sort(cl,bc);
}else{
BondComparatorByType bc=new BondComparatorByType();
bc.entigrator=entigrator;
Collections.sort(cl,bc);
}
ca=cl.toArray(new Core[0]);
//String icon$=ExtensionHandler.loadIcon(entigrator, EdgeHandler.EXTENSION_KEY, "bond.png");
for(Core aCa:ca){
try{
sb.append(getItem( entigrator, entity.getKey(),webHome$, aCa));
}catch(Exception ee){
Logger.getLogger(JNodeFacetOpenItem.class.getName()).info(ee.toString());
}
}
}
return sb.toString();
}catch(Exception e){
Logger.getLogger(JBondsPanel.class.getName()).severe(e.toString());
}
return null;
}
private static String getItem(Entigrator entigrator,String entityKey$,String webHome$, Core bond){
try{
//String iconTerm$="
";
String outLabel$=entigrator.indx_getLabel(bond.type);
String inLabel$=entigrator.indx_getLabel(bond.value);
// String edgeLabel$=entigrator.indx_getLabel(entityKey$);
String outHref$= getEntityReference( entigrator, webHome$, bond.type);
String inHref$= getEntityReference( entigrator, webHome$, bond.value);
// String edgeHref$= getEntityReference( entigrator, webHome$, entityKey$);
StringBuffer sb=new StringBuffer();
sb.append(""+outLabel$+" ");
//sb.append(" -> ");
//sb.append(""+edgeLabel$+" ");
sb.append("");
if(hasDetailes(entigrator,bond.name,entityKey$)){
//sb.append("(Details)");
String detReference$=getDetailsReference( entigrator, webHome$,entityKey$, entityKey$,bond);
sb.append("(details)");
}
sb.append("-> ");
//sb.append(" -> ");
sb.append(""+inLabel$+" ");
return sb.toString();
}catch(Exception e){
Logger.getLogger(JEdgeFacetOpenItem.class.getName()).info(e.toString());
}
return null;
}
private static String getDetailsReference(Entigrator entigrator,String webHome$,String entityKey$,String edgeKey$,Core bond){
try{
Properties foiLocator=new Properties();
foiLocator.setProperty(BaseHandler.HANDLER_CLASS,JBondDetailFacetOpenItem.class.getName());
foiLocator.setProperty(Entigrator.ENTIHOME,entigrator.getEntihome());
String entityLabel$=entigrator.indx_getLabel(entityKey$);
foiLocator.setProperty(EntityHandler.ENTITY_KEY,entityKey$);
foiLocator.setProperty(EntityHandler.ENTITY_LABEL,entityLabel$);
foiLocator.setProperty(JBondsPanel.EDGE_KEY,edgeKey$);
foiLocator.setProperty(JBondsPanel.BOND_KEY,bond.name);
foiLocator.setProperty(Locator.LOCATOR_TITLE,"Details");
foiLocator.setProperty(WContext.WEB_HOME,webHome$);
foiLocator.setProperty(WContext.WEB_REQUESTER,JNodeFacetOpenItem.class.getName());
return webHome$+"?"+WContext.WEB_LOCATOR+"="+Base64.encodeBase64URLSafeString(Locator.toString(foiLocator).getBytes());
}catch(Exception e){
Logger.getLogger(JNodeFacetOpenItem.class.getName()).info(e.toString());
}
return null;
}
private static String getEntityReference(Entigrator entigrator,String webHome$,String entityKey$){
try{
Properties foiLocator=new Properties();
foiLocator.setProperty(BaseHandler.HANDLER_CLASS,JEntityFacetPanel.class.getName());
foiLocator.setProperty(Entigrator.ENTIHOME,entigrator.getEntihome());
String entityLabel$=entigrator.indx_getLabel(entityKey$);
foiLocator.setProperty(EntityHandler.ENTITY_KEY,entityKey$);
foiLocator.setProperty(EntityHandler.ENTITY_LABEL,entityLabel$);
foiLocator.setProperty(Locator.LOCATOR_TITLE,entityLabel$);
foiLocator.setProperty(WContext.WEB_HOME,webHome$);
foiLocator.setProperty(WContext.WEB_REQUESTER,JNodeFacetOpenItem.class.getName());
return webHome$+"?"+WContext.WEB_LOCATOR+"="+Base64.encodeBase64URLSafeString(Locator.toString(foiLocator).getBytes());
}catch(Exception e){
Logger.getLogger(JNodeFacetOpenItem.class.getName()).info(e.toString());
}
return null;
}
private static boolean hasDetailes(Entigrator entigrator,String bondKey$,String edgeKey$){
try{
Sack edge=entigrator.getEntityAtKey(edgeKey$);
Core[] ca=edge.elementGet("detail");
if(ca==null)
return false;
Core bond=edge.getElementItem("bond", bondKey$);
for(Core c:ca)
if(bondKey$.equals(c.type))
return true;
}catch(Exception e){
Logger.getLogger(JNodeFacetOpenItem.class.getName()).info(e.toString());
}
return false;
}
private static class BondComparatorByValue implements Comparator{
public Entigrator entigrator;
@Override
public int compare(Core o1, Core o2) {
try{
String l1$=o1.value;
String l2$=o2.value;
String i1$=entigrator.indx_getLabel(l1$);
String i2$=entigrator.indx_getLabel(l2$);
if(i1$==null&&i2$==null)
return 0;
if(i1$==null||"null".equals(i1$)&&i2$!=null)
return -1;
if(i2$==null||"null".equals(i2$)&&i1$!=null)
return 1;
return i1$.compareToIgnoreCase(i2$);
}catch(Exception e){
return 0;
}
}
}
private static class BondComparatorByType implements Comparator{
public Entigrator entigrator;
@Override
public int compare(Core o1, Core o2) {
try{
String l1$=o1.type;
String l2$=o2.type;
String i1$=entigrator.indx_getLabel(l1$);
String i2$=entigrator.indx_getLabel(l2$);
if(i1$==null&&i2$==null)
return 0;
if(i1$==null||"null".equals(i1$)&&i2$!=null)
return -1;
if(i2$==null||"null".equals(i2$)&&i1$!=null)
return 1;
return i1$.compareToIgnoreCase(i2$);
}catch(Exception e){
return 0;
}
}
}
@Override
public DefaultMutableTreeNode[] getDigest(Entigrator entigrator,String locator$) {
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy