/*
* Copyright (C) 2003-2007 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.ks.rss;
import java.util.Arrays;
import java.util.List;
import javax.jcr.observation.EventIterator;
import javax.jcr.observation.EventListener;
import org.exoplatform.ks.common.jcr.KSDataLocation;
public class ForumRSSEventListener implements EventListener{
private String path_ ;
private String workspace_ ;
private String repository_ ;
private KSDataLocation locator;
public ForumRSSEventListener(KSDataLocation dataLocator) throws Exception {
this.locator = dataLocator;
workspace_ = dataLocator.getWorkspace();
repository_ = dataLocator.DEFAULT_REPOSITORY_NAME;
}
public String getSrcWorkspace(){ return workspace_ ; }
public String getRepository(){ return repository_ ; }
public String getPath(){ return path_ ; }
public void setPath(String path){ path_ = path ; }
public void onEvent(EventIterator evIter){
/*try{
ForumFeedGenerator process = new ForumFeedGenerator(locator);
String path = null, path_= "";;
while(evIter.hasNext()) {
Event ev = evIter.nextEvent() ;
path = ev.getPath();
if(path.indexOf("pruneSetting") > 0) continue;
if(ev.getType() == Event.NODE_ADDED){
process.itemAdded(ev.getPath());
break;
}else if(ev.getType() == Event.PROPERTY_CHANGED) {
if(hasProperties(path)) {
process.itemUpdated(path.substring(0, path.lastIndexOf("/")));
break;
}
}else if(ev.getType() == Event.NODE_REMOVED) {
if(path_.contains(path) || path_.length() == 0) {
path_ = path;
}
}
}
if(path_.length() > 0) {
process.itemRemoved(path_);
}
}catch(Exception e) {
e.printStackTrace() ;
} */
}
private boolean hasProperties(String path) {
String property = path.substring(path.lastIndexOf("/")+1);
List<String> list = Arrays.asList((new String[]{"exo:message", "exo:name", "exo:isApproved", "exo:isActiveByTopic",
"exo:isHidden", "exo:isClosed", "exo:isLock", "exo:isWaiting", "exo:isActive", "exo:isActiveByForum"}));
return (list.contains(property))?true:false;
}
}