package ${package_name};

import com.sap.ip.me.api.conf.VisibilityType;
import com.sap.ip.me.api.persist.core.PersistenceException;
import com.sap.ip.me.api.services.MeIterator;
import com.sap.ip.me.api.smartsync.ModificationNotAllowedException;
import com.sap.ip.me.api.smartsync.ObjectIterator;
import com.sap.ip.me.api.smartsync.Row;
import com.sap.ip.me.api.smartsync.RowCollection;
import com.sap.ip.me.api.smartsync.RowDescriptor;
import com.sap.ip.me.api.smartsync.RowList;
import com.sap.ip.me.api.smartsync.SmartSyncRuntime;
import com.sap.ip.me.api.smartsync.SyncBo;
import com.sap.ip.me.api.smartsync.SyncBoCollection;
import com.sap.ip.me.api.smartsync.SyncBoDataFacade;
import com.sap.ip.me.api.smartsync.SyncBoDescriptor;
import com.sap.ip.me.api.smartsync.SyncBoDescriptorFacade;
import com.sap.mbs.core.api.*;
import com.sap.mbs.core.bo.*;
import ${interface_package_name}.*;

import java.util.ResourceBundle;

/**
 *
 *A factory object manages a business object and all its composing child business objects.  This factory object is responsible for the following tasks for all the business objects it manages:
 * -Looking-up: looks up a single business object by its key from persistence.
 * -Retrieving: retrieves a collection of all the business objects from persistence.
 * -Constructing: constructs a business object instance.
 * -Inserting: inserts a business object to persistence.
 * -Copying: clones a business object for editing.  The cloned business object has exactly the same keys and contents with the original one, but not on persistence.
 * -Updating: updates a business object in persistence.
 * -Deleting: deletes a business object from persistence.
 * -Other business logics, e.g., searching, etc.
 *
 *@author     ${author}
 *@created    ${current_date}
 *@version
 */

public class ${class_name} implements ${interface_name}, RowBOManager {

${naming_constant}

${descriptor_constant}

	// member variables
	private NamingService       naming;
	private SyncBoDataFacade    dataFacade;

	public ${class_name}() {
		naming = NamingService.getInstance();
		dataFacade = SmartSyncRuntime.getInstance().
		getSyncBoDataFacade(VisibilityType.SEPARATED);
	}

       /*********************************************
        METHODS FOR ${top_bo_name}
	*********************************************/

${lookup_method}	 

${get_method}

${create_method}

${insert_method}

${update_method}

${copy_method}

${delete_method}

${createcheck_method}

${child_methods}

${relation_methods}

}





