title: Enterprise Architect scripting with java - add CustomProperty
body: <p>I want to add a legend to my activity diagram, which will be generate programatically by java and the ea-api.
  I already know how to create the legend element and show it in the diagram (Type: "Text" und Subtype: 76):</p>
  
  <pre><code>Element legend = elements.AddNew("Color Legend", "Text");
  elements.Refresh();
  
  legend.SetSubtype(76);
  legend.Update();
  
  //Show in diagram
  DiagramObject diagramObject = diagramObjects.AddNew("l=0; r=100; t=0; b=-100;", "");
  diagramObjects.Refresh();
  // reference the DiagramObject to the before created element
  diagramObject.SetElementID(legend.GetElementID());
  </code></pre>
  
  <p>But this is only an empty legend. So my question is, how to add an CustomProperty to the CustomProperties. My first approach was the following code:</p>
  
  <pre><code>Collection&lt;CustomProperty&gt; customProperties = legend.GetCustomProperties();
  CustomProperty cp = customProperties.AddNew("LegendEntryTest", "Back_Ground_Color=2124031;");
  customProperties.Refresh();
  legend.Update();
  </code></pre>
  
  <p>But this don't work, the legend is still empty:(</p>
  
  <p>Here is an example-legend:</p>
  
  <p><img src="https://i.stack.imgur.com/mqpPw.jpg" alt="enter image description here"></p>
  
  <p>Regards,
  Phil</p>
  
  <p><strong>EDIT</strong>
  With the help of Geert Bellekens I had solved my problem. Now I use the repository.Execute(String sqlStmt) method to insert the custom property in the <code>t_xref</code>.
  The following code is a small example how it work's:</p>
  
  <pre><code>//get elementGUID of legend
  String legendGUID = legend.GetElementGUID();
  
  //create the description value for one custom_property
  String name="TestColor1";
  String color="3381504";
  int customPropertyIndex = 0;
  
  String description = "@PROP=@NAME="+name+"@ENDNAME;@TYPE=LEGEND_OBJECTSTYLE@ENDTYPE;@VALU=#Back_Ground_Color#="+color+";#Pen_Color#=16777215;#Pen_Size#=1;#Legend_Type#=LEGEND_OBJECTSTYLE;@ENDVALU;@PRMT="+customPropertyIndex +"@ENDPRMT;@ENDPROP;"
  
  //add description part for the legend
  description += "@PROP=@NAME=Legend@ENDNAME;@TYPE=LEGEND_STYLE_SETTINGS@ENDTYPE;@VALU=@ENDVALU;@PRMT=@ENDPRMT;@ENDPROP;"
  
  String sqlInsertStmt="INSERT INTO t_xref "
              + "(" 
                  + "Client,"
                  + "XrefID,"
                  + "Type,"
                  + "Name,"
                  + "Visibility,"
                  + "Partition,"
                  + "Supplier,"
                  + "Description"
              + ") "
              + " VALUES ("
                  +"'"+legendGUID+ "',"
                  + "'{"+UUID.randomUUID().toString()+"}',"
                  + "'element property',"
                  + "'CustomProperties',"
                  + "'Public',"
                  + "'0',"
                  + "'&amp;lt;none&amp;gt;',"
                  + "'"+description+"'"
              + ");"
                  ;
  
  repository.Execute(sqlInsertStmt);
  </code></pre>
  
  <p>With <code>java.util.UUID</code> I generate a new GUID for the field <code>XrefID</code>.</p>
  
  <p>By the way: To convert a RGB-color to that which will accept by Enterprise Architect you can use the following formular:</p>
  
  <pre><code> int colorValue = color.getRed() + (color.getGreen() * 256)
              + (color.getBlue() * 256 * 256);
  </code></pre>
  
  <p>(RGB Color Model)</p>