From: <an...@us...> - 2009-12-03 10:41:02
|
Revision: 10369 http://wonder.svn.sourceforge.net/wonder/?rev=10369&view=rev Author: anjo Date: 2009-12-03 10:40:48 +0000 (Thu, 03 Dec 2009) Log Message: ----------- added GraphViz support Modified Paths: -------------- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel.txt Added Paths: ----------- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/ERD2WGraphVizPage.api trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.html trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.wod trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.woo trunk/Wonder/Frameworks/Core/ERDirectToWeb/Sources/er/directtoweb/pages/ERD2WGraphVizPage.java Added: trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/ERD2WGraphVizPage.api =================================================================== --- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/ERD2WGraphVizPage.api (rev 0) +++ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/ERD2WGraphVizPage.api 2009-12-03 10:40:48 UTC (rev 10369) @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<wodefinitions> + <wo wocomponentcontent="false" class="ERD2WGraphVizPage.java"> + + </wo> +</wodefinitions> \ No newline at end of file Added: trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.html =================================================================== --- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.html (rev 0) +++ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.html 2009-12-03 10:40:48 UTC (rev 10369) @@ -0,0 +1,27 @@ +digraph g { +graph [ + rankdir = "LR" +]; +node [ + fontsize = "16" + shape = "record" +]; +edge [ + +]; + +<webobject name=Entities>"<webobject name=EntityName></webobject>" [ + label = "<webobject name=EntityName></webobject>|<webobject name=Attributes><webobject name=AttributeName></webobject>|</webobject><webobject name=ToOneRelationships><webobject name=RelationshipName></webobject>|<webobject name=RelationshipName></webobject></webobject>|<webobject name=ToManyRelationships><webobject name=RelationshipName></webobject>|<webobject name=RelationshipName></webobject></webobject>" +]; +</webobject> +<webobject name=Entities> +<webobject name=ToOneRelationships> +"<webobject name=EntityName></webobject>":<webobject name=RelationshipName></webobject> <webobject name=NodeType></webobject> "<webobject name=DestinationEntityName></webobject>": <webobject name=DestinationRelationshipName></webobject> [ + id = <webobject name=NodeID></webobject> +];</webobject> +<webobject name=ToManyRelationships> +"<webobject name=EntityName></webobject>":<webobject name=RelationshipName></webobject> <webobject name=NodeType></webobject> "<webobject name=DestinationEntityName></webobject>": <webobject name=DestinationRelationshipName></webobject> [ + id = <webobject name=NodeID></webobject> +];</webobject> +</webobject> +} \ No newline at end of file Added: trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.wod =================================================================== --- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.wod (rev 0) +++ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.wod 2009-12-03 10:40:48 UTC (rev 10369) @@ -0,0 +1,48 @@ +Entities : WORepetition { + list = d2wContext.visibleEntityNames; + item = entityName; +} + +EntityName : WOString { + value = d2wContext.entity.name; +} + +NodeType : WOString { + value = nodeType; + escapeHTML = false; +} + +NodeID : WOString { + value = nodeID; +} + +DestinationEntityName : WOString { + value = d2wContext.smartRelationship.destinationEntity.name; +} + +DestinationRelationshipName : WOString { + value = d2wContext.smartRelationship.anyInverseRelationship.name; +} + +Attributes : WORepetition { + list = attributes; + item = d2wContext.propertyKey; +} + +AttributeName : WOString { + value = d2wContext.propertyKey; +} + +ToOneRelationships : WORepetition { + list = toOneRelationships; + item = d2wContext.propertyKey; +} + +ToManyRelationships : WORepetition { + list = toManyRelationships; + item = d2wContext.propertyKey; +} + +RelationshipName : WOString { + value = d2wContext.propertyKey; +} Added: trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.woo =================================================================== --- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.woo (rev 0) +++ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Components/Nonlocalized.lproj/ERD2WGraphVizPage.wo/ERD2WGraphVizPage.woo 2009-12-03 10:40:48 UTC (rev 10369) @@ -0,0 +1,4 @@ +{ + "WebObjects Release" = "WebObjects 5.0"; + encoding = "UTF-8"; +} \ No newline at end of file Modified: trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel =================================================================== --- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel 2009-12-03 07:23:54 UTC (rev 10368) +++ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel 2009-12-03 10:40:48 UTC (rev 10369) @@ -379,6 +379,9 @@ {"author" = "70"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOAndQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOOrQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "inspect"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "edit"; }); }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "subTask"; "selectorName" = "isEqualTo"; "value" = "printerFriendly"; }); }; "rhs" = {"class" = "er.directtoweb.ERDKeyValueAssignment"; "keyPath" = "pageName"; "value" = "templateNameForPrinterFriendlyInspectPage"; }; }, {"author" = "70"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOAndQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOOrQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "list"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "select"; }); }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "subTask"; "selectorName" = "isEqualTo"; "value" = "printerFriendly"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "existingSubTask"; "selectorName" = "isEqualTo"; "value" = "group"; }); }; "rhs" = {"class" = "er.directtoweb.ERDKeyValueAssignment"; "keyPath" = "pageName"; "value" = "templateNameForGroupingPrinterFriendlyListPage"; }; }, {"author" = "70"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOAndQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOOrQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "inspect"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "edit"; }); }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "subTask"; "selectorName" = "isEqualTo"; "value" = "printerFriendly"; }, {"class" = "com.webobjects.eocontrol.EOOrQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "existingPageName"; "selectorName" = "isLike"; "value" = "ERD2WTabInspectPageTemplate*"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "existingPageName"; "selectorName" = "isLike"; "value" = "ERD2WWizardCreationPageTemplate*"; }); }); }; "rhs" = {"class" = "er.directtoweb.ERDKeyValueAssignment"; "keyPath" = "pageName"; "value" = "templateNameForPrinterFriendlyInspectPage"; }; }, + {"author" = "100"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "pageConfiguration"; "selectorName" = "isLike"; "value" = "GraphViz*"; }; "rhs" = {"class" = "com.webobjects.directtoweb.Assignment"; "keyPath" = "task"; "value" = "showAll"; }; }, + {"author" = "100"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "pageConfiguration"; "selectorName" = "isLike"; "value" = "GraphViz*"; }; "rhs" = {"class" = "er.directtoweb.ERDDefaultModelAssignment"; "keyPath" = "entity"; "value" = "*all*"; }; }, + {"author" = "100"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "pageConfiguration"; "selectorName" = "isLike"; "value" = "GraphViz*"; }; "rhs" = {"class" = "com.webobjects.directtoweb.Assignment"; "keyPath" = "pageName"; "value" = "ERD2WGraphVizPage"; }; }, {"author" = "100"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "editRelationship"; }; "rhs" = {"class" = "er.directtoweb.ERDKeyValueAssignment"; "keyPath" = "pageName"; "value" = "templateNameForEditRelationshipPage"; }; }, {"author" = "100"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOAndQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "list"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "subTask"; "selectorName" = "isEqualTo"; "value" = "calendar"; }); }; "rhs" = {"class" = "er.directtoweb.ERDKeyValueAssignment"; "keyPath" = "pageName"; "value" = "templateNameForListCalendarPage"; }; }, {"author" = "100"; "class" = "com.webobjects.directtoweb.Rule"; "lhs" = {"class" = "com.webobjects.eocontrol.EOAndQualifier"; "qualifiers" = ({"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "task"; "selectorName" = "isEqualTo"; "value" = "list"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "subTask"; "selectorName" = "isEqualTo"; "value" = "group"; }, {"class" = "com.webobjects.eocontrol.EOKeyValueQualifier"; "key" = "targetOutput"; "selectorName" = "isEqualTo"; "value" = "xml"; }); }; "rhs" = {"class" = "er.directtoweb.ERDKeyValueAssignment"; "keyPath" = "pageName"; "value" = "templateNameForGroupingListXMLPage"; }; }, Modified: trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel.txt =================================================================== --- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel.txt 2009-12-03 07:23:54 UTC (rev 10368) +++ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Resources/d2w.d2wmodel.txt 2009-12-03 10:40:48 UTC (rev 10369) @@ -387,6 +387,9 @@ 70 : ((task = 'inspect' or task = 'edit') and subTask = 'printerFriendly') => pageName = templateNameForPrinterFriendlyInspectPage [er.directtoweb.ERDKeyValueAssignment], 70 : ((task = 'list' or task = 'select') and subTask = 'printerFriendly' and existingSubTask = 'group') => pageName = templateNameForGroupingPrinterFriendlyListPage [er.directtoweb.ERDKeyValueAssignment], 70 : ((task = 'inspect' or task = 'edit') and subTask = 'printerFriendly' and (existingPageName like 'ERD2WTabInspectPageTemplate*' or existingPageName like 'ERD2WWizardCreationPageTemplate*')) => pageName = templateNameForPrinterFriendlyInspectPage [er.directtoweb.ERDKeyValueAssignment], + 100 : pageConfiguration like 'GraphViz*' => task = showAll [com.webobjects.directtoweb.Assignment], + 100 : pageConfiguration like 'GraphViz*' => entity = *all* [er.directtoweb.ERDDefaultModelAssignment], + 100 : pageConfiguration like 'GraphViz*' => pageName = ERD2WGraphVizPage [com.webobjects.directtoweb.Assignment], 100 : task = 'editRelationship' => pageName = templateNameForEditRelationshipPage [er.directtoweb.ERDKeyValueAssignment], 100 : (task = 'list' and subTask = 'calendar') => pageName = templateNameForListCalendarPage [er.directtoweb.ERDKeyValueAssignment], 100 : (task = 'list' and subTask = 'group' and targetOutput = 'xml') => pageName = templateNameForGroupingListXMLPage [er.directtoweb.ERDKeyValueAssignment], Added: trunk/Wonder/Frameworks/Core/ERDirectToWeb/Sources/er/directtoweb/pages/ERD2WGraphVizPage.java =================================================================== --- trunk/Wonder/Frameworks/Core/ERDirectToWeb/Sources/er/directtoweb/pages/ERD2WGraphVizPage.java (rev 0) +++ trunk/Wonder/Frameworks/Core/ERDirectToWeb/Sources/er/directtoweb/pages/ERD2WGraphVizPage.java 2009-12-03 10:40:48 UTC (rev 10369) @@ -0,0 +1,74 @@ +package er.directtoweb.pages; + +import com.webobjects.appserver.WOContext; +import com.webobjects.appserver.WOResponse; +import com.webobjects.eoaccess.EOEntity; +import com.webobjects.foundation.NSArray; +import com.webobjects.foundation.NSMutableArray; + +import er.extensions.appserver.ERXApplication; + + +/** + * Creates a GrahpViz page for those that needs such trivial tools. + * @author ak + * + */ +public class ERD2WGraphVizPage extends ERD2WPage { + + private int _nodeID = 0; + + public ERD2WGraphVizPage(WOContext context) { + super(context); + } + + public int nodeID() { + return _nodeID ++; + } + + public NSArray<String> attributes() { + NSMutableArray<String> result = new NSMutableArray<String>(); + EOEntity entity = entity(); + for (String key : (NSArray<String>)displayPropertyKeys()) { + if(entity.classDescriptionForInstances().attributeKeys().containsObject(key) && entity.classPropertyNames().containsObject(key)) { + result.addObject(key); + } + } + return result; + } + + public NSArray<String> toOneRelationships() { + NSMutableArray<String> result = new NSMutableArray<String>(); + EOEntity entity = entity(); + for (String key : (NSArray<String>)displayPropertyKeys()) { + if(entity.classDescriptionForInstances().toOneRelationshipKeys().containsObject(key) && entity.classPropertyNames().containsObject(key)) { + result.addObject(key); + } + } + return result; + } + + public String nodeType() { + return "->"; + } + + public NSArray<String> toManyRelationships() { + NSMutableArray<String> result = new NSMutableArray<String>(); + EOEntity entity = entity(); + for (String key : (NSArray<String>)displayPropertyKeys()) { + if(entity.classDescriptionForInstances().toManyRelationshipKeys().containsObject(key) && entity.classPropertyNames().containsObject(key)) { + result.addObject(key); + } + } + return result; + } + + @Override + public void appendToResponse(WOResponse response, WOContext context) { + // we do NOT want to expose our model to just everyone... + if (ERXApplication.isDevelopmentModeSafe()) { + super.appendToResponse(response, context); + } + response.setHeader("text/plain", "content-type"); + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |