/**
* Copyright 2010 JBoss Inc
*
* 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.
*/
package org.drools.guvnor.server.repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.drools.repository.events.SaveEvent;
import org.drools.repository.AssetItem;
import org.drools.repository.CategoryItem;
import org.drools.repository.PackageItem;
import org.drools.guvnor.client.common.AssetFormats;
import org.drools.ide.common.client.modeldriven.brl.RuleAttribute;
import org.drools.ide.common.client.modeldriven.brl.RuleModel;
import org.drools.ide.common.server.util.BRDRLPersistence;
import org.drools.ide.common.server.util.BRXMLPersistence;
/**
* @author Michael Neale
*/
public class SampleSaveEvent implements SaveEvent {
public void onAssetCheckin(AssetItem item) {
if (item.getFormat().equals(AssetFormats.BUSINESS_RULE)) {
RuleModel rm = BRXMLPersistence.getInstance().unmarshal(item.getContent(true));
//StevePersist(item, drl, xml) <status, uuid, username, categories>
//StevePersist(guid, hm);
HashMap dataToPersist = new HashMap();
dataToPersist.put("uuid", item.getUUID());
dataToPersist.put("type", "BRL");
dataToPersist.put("status", item.getStateDescription());
dataToPersist.put("lastmodifiedby", item.getLastContributor());
dataToPersist.put("lastmodifieddate", item.getLastModified());
List<CategoryItem> lstCategoryItem = item.getCategories();
List<String> lstCategoryName = new ArrayList<String>();
for(int i=0;i<lstCategoryItem.size();i++){
CategoryItem ci = lstCategoryItem.get(i);
lstCategoryName.add(ci.getName());
}
//List of Strings
dataToPersist.put("category", lstCategoryName);
if (rm.attributes.length > 0) {
HashMap attributesToPersist = new HashMap();
for (int att = 0; att < rm.attributes.length; att++) {
attributesToPersist.put(rm.attributes[att].attributeName,rm.attributes[att].value);
}
//Hash of Strings
dataToPersist.put("attributes", attributesToPersist);
}
if (rm.metadataList.length > 0) {
HashMap metadataToPersist = new HashMap();
for (int meta = 0; meta < rm.metadataList.length; meta++) {
metadataToPersist.put(rm.metadataList[meta].attributeName,rm.metadataList[meta].value);
}
//Hash of Strings
dataToPersist.put("metadata", metadataToPersist);
}
dataToPersist.put("status", item.getStateDescription());
dataToPersist.put("fullxml", item.getContent(true));
dataToPersist.put("fulldrl", BRDRLPersistence.getInstance().marshal(rm));
//xml = SteveLoad(guid)
//list guids = SteveSyncUp()
//BRXMLPersistence.getInstance().marshal(data)
System.err.println(item.getUUID());
System.err.println(item.getStateDescription());
System.err.println(item.getLastContributor());
System.err.println(item.getLastModified());
//TODO getContent calls load, need to flag it off
System.err.println(item.getContent());
System.err.println(BRDRLPersistence.getInstance().marshal(rm));
//or use ... item.getContent()
} else if (item.getFormat().equals(AssetFormats.DECISION_TABLE_GUIDED)) {
System.err.println(item.getContent());
}
//To change body of implemented methods use File | Settings | File Templates.
}
public void onAssetDelete(AssetItem item) {
//To change body of implemented methods use File | Settings | File Templates.
}
public void onPackageCreate(PackageItem item) {
//To change body of implemented methods use File | Settings | File Templates.
}
}