class NetworkSchema implements NetworkDescriptor {

    @SuppressWarnings("unchecked")
    @Override
    public List<AnalyticNodeDescriptor> getPublishers() {
    	if(nodes == null || nodes.size() < 1) {
    		throw new IllegalStateException("Network: " + name + " was initialized with no nodes!");
    	}
    	
    	if(mainPublishers == null) {
    		mainPublishers = new ArrayList<AnalyticNodeDescriptor>();
    	}
    	
    	int len = nodes.size();
    	for(int i = 0;i < len;i++) {
    		AnalyticNodeDescriptor currCheck = nodes.get(i);
    		boolean isPublisher = true;
    		for(int j = 0;j < len;j++) {
    			AnalyticNodeDescriptor iter = nodes.get(j);
    			if(!(isPublisher = !iter.getInputNodeDescriptors().contains(currCheck))) {
    				break;
    			}
    		}
    		if(isPublisher) mainPublishers.add(currCheck);
    	}
    	return mainPublishers;
    }

    public  NetworkSchema(String name);
    public  NetworkSchema(String name, List<AnalyticNodeDescriptor> nodes);

}