package ${package};

##
## Copyright 2001-2005 The Apache Software Foundation.
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##

// Model class imports
#foreach ( $class in $classes )
#if ( $class.getMetadata( $storeClassMetadataId ).isStorable() && ${class.packageName} != ${package} )
import ${class.packageName}.${class.name};
#end
#end

/**
 * Generated ModelloMetadata class for ${model.name}.
 *
 * @author Mr Modello
 */
public class ${model.name}ModelloMetadata
{
    private String modelVersion;

    public String getModelVersion()
    {
        return modelVersion;
    }

    public void setModelVersion( String modelVersion )
    {
        this.modelVersion = modelVersion;
    }
}
