Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Generate toString() method based on EMF
Generate toString() method based on EMF [message #549500] Mon, 26 July 2010 21:27 Go to next message
Lars Vogel is currently offline Lars VogelFriend
Messages: 1098
Registered: July 2009
Senior Member

Hi,

I have a model based on EMF and generate Java Code from it. Currently
the generated code does not include a generated toString() method. Is it
possible to generated one via EMF?

Best regards, Lars

--
http://www.vogella.de/ - Eclipse plugin and Eclipse RCP Tutorials
http://www.twitter.com/vogella - vogella on Twitter
Re: Generate toString() method based on EMF [message #549506 is a reply to message #549500] Mon, 26 July 2010 22:35 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33140
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------050901020409030507050904
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Lars,

There's the following method in the template, so if you're not seeing a
toString method in a particular class' Impl, it's because the class
doesn't generate any fields deemed suitable for use. Generally we try
to use only attribute values. You'd need to be very careful with
references because you might easily end up with infinite recursion...

<%if (!genClass.hasImplementedToStringGenOperation() && isImplementation
&& !genModel.isReflectiveDelegation() && !genModel.isDynamicDelegation()
&& !genClass.getToStringGenFeatures().isEmpty()) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%if (genModel.useClassOverrideAnnotation()) {%>
@Override
<%}%>
public String toString()
{
if (eIsProxy()) return super.toString();

StringBuffer result = new StringBuffer(super.toString());
<%{ boolean first = true;%>
<%for (GenFeature genFeature : genClass.getToStringGenFeatures()) {%>
<%if (first) { first = false;%>
result.append(" (<%=genFeature.getName()%>:
");<%=genModel.getNonNLS()%>
<%} else {%>
result.append(", <%=genFeature.getName()%>:
");<%=genModel.getNonNLS()%>
<%}%>
<%if (genFeature.isUnsettable() && !genFeature.isListType()) {%>
<%if (genModel.isVirtualDelegation() &&
!genFeature.isPrimitiveType()) {%>
if
(eVirtualIsSet(<%=genClass.getQualifiedFeatureID(genFeature)% ><%=positiveOffsetCorrection%>))
result.append(eVirtualGet(<%=genClass.getQualifiedFeatureID(genFeature)% ><%=positiveOffsetCorrection%>));
else result.append("<unset>");<%=genModel.getNonNLS()%>
<%} else {%>
<%if (genClass.isFlag(genFeature)) {%>
<%if (genFeature.isBooleanType()) {%>
if (<%if (genClass.isESetFlag(genFeature))
{%>(<%=genClass.getESetFlagsField(genFeature)%> &
<%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else
{%><%=genFeature.getUncapName()%>ESet<%}%>)
result.append((<%=genClass.getFlagsField(genFeature)%> &
<%=genFeature.getUpperName()%>_EFLAG) != 0); else
result.append("<unset>");<%=genModel.getNonNLS()%>
<%} else {%>
if (<%if (genClass.isESetFlag(genFeature))
{%>(<%=genClass.getESetFlagsField(genFeature)%> &
<%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else
{%><%=genFeature.getUncapName()%>ESet<%}%>)
result.append(<%=genFeature.getUpperName()%>_EFLAG_VALUES[( <%=genClass.getFlagsField(genFeature)%>
& <%=genFeature.getUpperName()%>_EFLAG) >>>
<%=genFeature.getUpperName()%>_EFLAG_OFFSET]); else
result.append("<unset>");<%=genModel.getNonNLS()%>
<%}%>
<%} else {%>
if (<%if (genClass.isESetFlag(genFeature))
{%>(<%=genClass.getESetFlagsField(genFeature)%> &
<%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else
{%><%=genFeature.getUncapName()%>ESet<%}%>)
result.append(<%=genFeature.getSafeName()%>); else
result.append("<unset>");<%=genModel.getNonNLS()%>
<%}%>
<%}%>
<%} else {%>
<%if (genModel.isVirtualDelegation() &&
!genFeature.isPrimitiveType()) {%>

result.append(eVirtualGet(<%=genClass.getQualifiedFeatureID(genFeature)% ><%=positiveOffsetCorrection%><%if
(!genFeature.isListType() && !genFeature.isReferenceType()){%>,
<%=genFeature.getEDefault()%><%}%>));
<%} else {%>
<%if (genClass.isFlag(genFeature)) {%>
<%if (genFeature.isBooleanType()) {%>
result.append((<%=genClass.getFlagsField(genFeature)%> &
<%=genFeature.getUpperName()%>_EFLAG) != 0);
<%} else {%>

result.append(<%=genFeature.getUpperName()%>_EFLAG_VALUES[( <%=genClass.getFlagsField(genFeature)%>
& <%=genFeature.getUpperName()%>_EFLAG) >>>
<%=genFeature.getUpperName()%>_EFLAG_OFFSET]);
<%}%>
<%} else {%>
result.append(<%=genFeature.getSafeName()%>);
<%}%>
<%}%>
<%}%>
<%}%>
<%}%>
result.append(')');
return result.toString();
}

<%}%>


Lars Vogel wrote:
> Hi,
>
> I have a model based on EMF and generate Java Code from it. Currently
> the generated code does not include a generated toString() method. Is
> it possible to generated one via EMF?
>
> Best regards, Lars
>

--------------050901020409030507050904
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Lars,<br>
<br>
There's the following method in the template, so if you're not seeing a
toString method in a particular class' Impl, it's because the class
doesn't generate any fields deemed suitable for use.&nbsp; Generally we try
to use only attribute values.&nbsp; You'd need to be very careful with
references because you might easily end up with infinite recursion...<br>
<br>
<small>&lt;%if (!genClass.hasImplementedToStringGenOperation()
&amp;&amp; isImplementation &amp;&amp;
!genModel.isReflectiveDelegation() &amp;&amp;
!genModel.isDynamicDelegation() &amp;&amp;
!genClass.getToStringGenFeatures().isEmpty()) {%&gt;<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp; &nbsp;* &lt;!-- begin-user-doc --&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;* &lt;!-- end-user-doc --&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;* @generated<br>
&nbsp;&nbsp;&nbsp; &nbsp;*/<br>
&nbsp; &lt;%if (genModel.useClassOverrideAnnotation()) {%&gt;<br>
&nbsp;&nbsp;&nbsp; @Override<br>
&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp; public String toString()<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (eIsProxy()) return super.toString();<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; StringBuffer result = new StringBuffer(super.toString());<br>
&nbsp; &lt;%{ boolean first = true;%&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;%for (GenFeature genFeature :
genClass.getToStringGenFeatures()) {%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%if (first) { first = false;%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result.append(" (&lt;%=genFeature.getName()%&gt;:
");&lt;%=genModel.getNonNLS()%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result.append(", &lt;%=genFeature.getName()%&gt;:
");&lt;%=genModel.getNonNLS()%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%if (genFeature.isUnsettable() &amp;&amp;
!genFeature.isListType()) {%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;%if (genModel.isVirtualDelegation() &amp;&amp;
!genFeature.isPrimitiveType()) {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eVirtualIsSet(&lt;%=genClass.getQualifiedFeatureID(genF eature)%&gt;&lt;%=positiveOffsetCorrection%&gt;) )
result.append(eVirtualGet(&lt;%=genClass.getQualifiedFea tureID(genFeature)%&gt;&lt;%=positiveOffsetCorrectio n%&gt;));
else result.append("&lt;unset&gt;");&lt;%=genModel.getNonNLS()%&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%if (genClass.isFlag(genFeature)) {%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%if (genFeature.isBooleanType()) {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (&lt;%if (genClass.isESetFlag(genFeature))
{%&gt;(&lt;%=genClass.getESetFlagsField(genFeature)% &gt; &amp;
&lt;%=genFeature.getUpperName()%&gt;_ESETFLAG) != 0&lt;%} else
{%&gt;&lt;%=genFeature.getUncapName()%&gt;ESet&a mp;lt;%}%&gt;)
result.append((&lt;%=genClass.getFlagsField(genFeature)% &gt; &amp;
&lt;%=genFeature.getUpperName()%&gt;_EFLAG) != 0); else
result.append("&lt;unset&gt;");&lt;%=genModel.getNonNLS()%&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (&lt;%if (genClass.isESetFlag(genFeature))
{%&gt;(&lt;%=genClass.getESetFlagsField(genFeature)% &gt; &amp;
&lt;%=genFeature.getUpperName()%&gt;_ESETFLAG) != 0&lt;%} else
{%&gt;&lt;%=genFeature.getUncapName()%&gt;ESet&a mp;lt;%}%&gt;)
result.append(&lt;%=genFeature.getUpperName()%&gt;_E FLAG_VALUES[(&lt;%=genClass.getFlagsField(genFeature)%&a mp;gt;
&amp; &lt;%=genFeature.getUpperName()%&gt;_EFLAG) &gt;&gt;&gt;
&lt;%=genFeature.getUpperName()%&gt;_EFLAG_OFFSET]); else
result.append("&lt;unset&gt;");&lt;%=genModel.getNonNLS()%&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (&lt;%if (genClass.isESetFlag(genFeature))
{%&gt;(&lt;%=genClass.getESetFlagsField(genFeature)% &gt; &amp;
&lt;%=genFeature.getUpperName()%&gt;_ESETFLAG) != 0&lt;%} else
{%&gt;&lt;%=genFeature.getUncapName()%&gt;ESet&a mp;lt;%}%&gt;)
result.append(&lt;%=genFeature.getSafeName()%&gt;); else
result.append("&lt;unset&gt;");&lt;%=genModel.getNonNLS()%&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;%if (genModel.isVirtualDelegation() &amp;&amp;
!genFeature.isPrimitiveType()) {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
result.append(eVirtualGet(&lt;%=genClass.getQualifiedFea tureID(genFeature)%&gt;&lt;%=positiveOffsetCorrectio n%&gt;&lt;%if
(!genFeature.isListType() &amp;&amp;
!genFeature.isReferenceType()){%&gt;,
&lt;%=genFeature.getEDefault()%&gt;&lt;%}%&g t;)); <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%if (genClass.isFlag(genFeature)) {%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%if (genFeature.isBooleanType()) {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result.append((&lt;%=genClass.getFlagsField(genFeature)% &gt;
&amp; &lt;%=genFeature.getUpperName()%&gt;_EFLAG) != 0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
result.append(&lt;%=genFeature.getUpperName()%&gt;_E FLAG_VALUES[(&lt;%=genClass.getFlagsField(genFeature)%&a mp;gt;
&amp; &lt;%=genFeature.getUpperName()%&gt;_EFLAG) &gt;&gt;&gt;
&lt;%=genFeature.getUpperName()%&gt;_EFLAG_OFFSET]); <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%} else {%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result.append(&lt;%=genFeature.getSafeName()%&gt;);<br >
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;%}%&gt;<br>
&nbsp; &lt;%}%&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; result.append(')');<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return result.toString();<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&lt;%}%&gt;</small><br>
<br>
<br>
Lars Vogel wrote:
<blockquote cite="mid:i2kuj7$dom$1@build.eclipse.org" type="cite">Hi,
<br>
<br>
I have a model based on EMF and generate Java Code from it. Currently
the generated code does not include a generated toString() method. Is
it possible to generated one via EMF?
<br>
<br>
Best regards, Lars
<br>
<br>
</blockquote>
</body>
</html>

--------------050901020409030507050904--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Generate toString() method based on EMF [message #550291 is a reply to message #549506] Thu, 29 July 2010 18:53 Go to previous message
Lars Vogel is currently offline Lars VogelFriend
Messages: 1098
Registered: July 2009
Senior Member

Thank you Ed for the answer.

Question is closed now.

On 27.07.2010 00:35, Ed Merks wrote:
> Lars,
>
> There's the following method in the template, so if you're not seeing a
> toString method in a particular class' Impl, it's because the class
> doesn't generate any fields deemed suitable for use. Generally we try to
> use only attribute values. You'd need to be very careful with references
> because you might easily end up with infinite recursion...
>
> <%if (!genClass.hasImplementedToStringGenOperation() && isImplementation
> && !genModel.isReflectiveDelegation() && !genModel.isDynamicDelegation()
> && !genClass.getToStringGenFeatures().isEmpty()) {%>
> /**
> * <!-- begin-user-doc -->
> * <!-- end-user-doc -->
> * @generated
> */
> <%if (genModel.useClassOverrideAnnotation()) {%>
> @Override
> <%}%>
> public String toString()
> {
> if (eIsProxy()) return super.toString();
>
> StringBuffer result = new StringBuffer(super.toString());
> <%{ boolean first = true;%>
> <%for (GenFeature genFeature : genClass.getToStringGenFeatures()) {%>
> <%if (first) { first = false;%>
> result.append(" (<%=genFeature.getName()%>: ");<%=genModel.getNonNLS()%>
> <%} else {%>
> result.append(", <%=genFeature.getName()%>: ");<%=genModel.getNonNLS()%>
> <%}%>
> <%if (genFeature.isUnsettable() && !genFeature.isListType()) {%>
> <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
> if
> (eVirtualIsSet(<%=genClass.getQualifiedFeatureID(genFeature)% ><%=positiveOffsetCorrection%>))
> result.append(eVirtualGet(<%=genClass.getQualifiedFeatureID(genFeature)% ><%=positiveOffsetCorrection%>));
> else result.append("<unset>");<%=genModel.getNonNLS()%>
> <%} else {%>
> <%if (genClass.isFlag(genFeature)) {%>
> <%if (genFeature.isBooleanType()) {%>
> if (<%if (genClass.isESetFlag(genFeature))
> {%>(<%=genClass.getESetFlagsField(genFeature)%> &
> <%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else
> {%><%=genFeature.getUncapName()%>ESet<%}%>)
> result.append((<%=genClass.getFlagsField(genFeature)%> &
> <%=genFeature.getUpperName()%>_EFLAG) != 0); else
> result.append("<unset>");<%=genModel.getNonNLS()%>
> <%} else {%>
> if (<%if (genClass.isESetFlag(genFeature))
> {%>(<%=genClass.getESetFlagsField(genFeature)%> &
> <%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else
> {%><%=genFeature.getUncapName()%>ESet<%}%>)
> result.append(<%=genFeature.getUpperName()%>_EFLAG_VALUES[( <%=genClass.getFlagsField(genFeature)%>
> & <%=genFeature.getUpperName()%>_EFLAG) >>>
> <%=genFeature.getUpperName()%>_EFLAG_OFFSET]); else
> result.append("<unset>");<%=genModel.getNonNLS()%>
> <%}%>
> <%} else {%>
> if (<%if (genClass.isESetFlag(genFeature))
> {%>(<%=genClass.getESetFlagsField(genFeature)%> &
> <%=genFeature.getUpperName()%>_ESETFLAG) != 0<%} else
> {%><%=genFeature.getUncapName()%>ESet<%}%>)
> result.append(<%=genFeature.getSafeName()%>); else
> result.append("<unset>");<%=genModel.getNonNLS()%>
> <%}%>
> <%}%>
> <%} else {%>
> <%if (genModel.isVirtualDelegation() && !genFeature.isPrimitiveType()) {%>
> result.append(eVirtualGet(<%=genClass.getQualifiedFeatureID(genFeature)% ><%=positiveOffsetCorrection%><%if
> (!genFeature.isListType() && !genFeature.isReferenceType()){%>,
> <%=genFeature.getEDefault()%><%}%>));
> <%} else {%>
> <%if (genClass.isFlag(genFeature)) {%>
> <%if (genFeature.isBooleanType()) {%>
> result.append((<%=genClass.getFlagsField(genFeature)%> &
> <%=genFeature.getUpperName()%>_EFLAG) != 0);
> <%} else {%>
> result.append(<%=genFeature.getUpperName()%>_EFLAG_VALUES[( <%=genClass.getFlagsField(genFeature)%>
> & <%=genFeature.getUpperName()%>_EFLAG) >>>
> <%=genFeature.getUpperName()%>_EFLAG_OFFSET]);
> <%}%>
> <%} else {%>
> result.append(<%=genFeature.getSafeName()%>);
> <%}%>
> <%}%>
> <%}%>
> <%}%>
> <%}%>
> result.append(')');
> return result.toString();
> }
>
> <%}%>
>
>
> Lars Vogel wrote:
>> Hi,
>>
>> I have a model based on EMF and generate Java Code from it. Currently
>> the generated code does not include a generated toString() method. Is
>> it possible to generated one via EMF?
>>
>> Best regards, Lars
>>
Previous Topic:Attribute ID = true slows down performance Pt. II
Next Topic:Opening a view when an EMF Generated editor opens
Goto Forum:
  


Current Time: Tue Apr 23 09:32:10 GMT 2024

Powered by FUDForum. Page generated in 0.03081 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top