Hi guys
Im looking for a way to save and represent a grid data structue inside a vp project.
I tested Grid diagram and etl table but it seems in this diagrams, data (acctually rows of table) should be relate to a part of project like diagrams, elements or models and we cant save custom values in them while the data that i want to store in those tables has no relation to the project elements or diagrams ( consider saving a two dimensional array of some random strings )
Acctually i want to use vp as a place to store and display this data and i want a plugin to do this action for me ( by action i mean creation of needed diagrams and elements for saving and showing data)
Please also note that i want the view of data to be like a table or grid just like how Etl table or grid diagram looks.
Is this possible at all ? If yes, what kind of diagram and element should i use and does creation of them fully supports in the vp api ?
Thanks in advance
Hi Mamad,
Thank you for your post. Let me discuss your case with our engineer first. I will get back to you as soon as I can.
Best regards,
Jick Yeung
Hi Mamad,
The answer to your question can be split into two steps:
- Create a custom model to store the non-project data
- Use ETL to visualize the information
For step 1, you can define a ‘Generic Model’, which is a custom model, and to store the information through the use of tagged values. Here is the code example:
// SAVE
IGenericModel lLoginInfo = IModelElementFactory.createGenericModel();
lLoginInfo.setGenericModelType("LoginInformation"); // I categorize this GenericModel is a "Login Information"
ITaggedValueContainer lTaggedValues = IModelElementFactory.createTaggedValueContainer();
lLoginInfo.setTaggedValues(lTaggedValues);
ITaggedValue lConnectionString = lTaggedValues.createTaggedValue(); // create a tagged value to store Connection String
lConnectionString.setName("Connection String");
lConnectionString.setValue(...);
ITaggedValue lRepositoryName = lTaggedValues.createTaggedValue(); // create another tagged value to store RepositoryName
lRepositoryName.setName("Repository Name");
lRepositoryName.setValue(...);
// LOAD
IProject lProject = ...;
IModelElement[] lElements = lProject.toModelElementArray(IModelElementFactory.MODEL_TYPE_GENERIC_MODEL);
for (IModelElement lElement : lElements) {
// find out the LoginInformation from project.
if ("LoginInformation".equals(((IGenericModel) lElement).getGenericModelType())) {
IGenericModel lLoginInformation = (IGenericModel) lElement;
String lConnectionString = lLoginInformation.getTaggedValues().getTaggedValueByName("Connection String").getValue();
String lRepositoryName = lLoginInformation.getTaggedValues().getTaggedValueByName("Repository Name").getValue();
}
}
For step 2, please refer to the discussion here:
Hope this helps. Please feel free to contact us again if you have any questions.
Best regards,
Jick Yeung
Thank you so much Jick
![]()
Your quides completely meet my needs but i still have a little problem
When i create the etl table and papulate it with my custom data, it does not show the data at first because its model element field is set on Built-in Model by default and i have to manually change it to Generic Model to show the data

I cant find any method to do this action automatically. Is it possible at all ?
Hi Mamad,
Your reply has been forwarded to our engineers to study. I will let you know when there is any news.
Best regards,
Jick Yeung
Hi Mamad,
Please try:
String myType = "ABC";
IDataTableQuery query1 = IModelElementFactory.instance().createDataTableQuery();
query1.setElementModelType(IModelElementFactory.MODEL_TYPE_GENERIC_MODEL);
query1.setConditions(IGenericModel.PROP_GENERIC_MODEL_TYPE+"="+"\""+myType+"\"");
lEtlTableModelElement.addQuery(query1);
Hope this helps.
Best regards,
Jick Yeung
Yeah, this is exactly what I wanted 
Thank you so much 
Hi Mamad,
You are welcome. 
Best regards,
Jick Yeung
