/* This code is part of Freenet. It is distributed under the GNU General * Public License, version 2 (or at your option any later version). See * http://www.gnu.org/ for further details of the GPL. */ package freenet.clients.fcp; import freenet.config.Config; import freenet.node.Node; import freenet.support.SimpleFieldSet; public class ConfigData extends FCPMessage { static final String name = "ConfigData"; final Node node; final boolean withCurrent; final boolean withDefaults; final boolean withSortOrder; final boolean withExpertFlag; final boolean withForceWriteFlag; final boolean withShortDescription; final boolean withLongDescription; final boolean withDataTypes; final String identifier; public ConfigData(Node node, boolean withCurrent, boolean withDefaults, boolean withSortOrder, boolean withExpertFlag, boolean withForceWriteFlag, boolean withShortDescription, boolean withLongDescription, boolean withDataTypes, String identifier) { this.node = node; this.withCurrent = withCurrent; this.withDefaults = withDefaults; this.withSortOrder = withSortOrder; this.withExpertFlag = withExpertFlag; this.withForceWriteFlag = withForceWriteFlag; this.withShortDescription = withShortDescription; this.withLongDescription = withLongDescription; this.withDataTypes = withDataTypes; this.identifier = identifier; } @Override public SimpleFieldSet getFieldSet() { SimpleFieldSet fs = new SimpleFieldSet(true); if(withCurrent) { SimpleFieldSet current = node.config.exportFieldSet(Config.RequestType.CURRENT_SETTINGS, true); if(!current.isEmpty()) { fs.put("current", current); } } if(withDefaults) { SimpleFieldSet defaultSettings = node.config.exportFieldSet(Config.RequestType.DEFAULT_SETTINGS, false); if(!defaultSettings.isEmpty()) { fs.put("default", defaultSettings); } } if(withSortOrder) { SimpleFieldSet sortOrder = node.config.exportFieldSet(Config.RequestType.SORT_ORDER, false); if(!sortOrder.isEmpty()) { fs.put("sortOrder", sortOrder); } } if(withExpertFlag) { SimpleFieldSet expertFlag = node.config.exportFieldSet(Config.RequestType.EXPERT_FLAG, false); if(!expertFlag.isEmpty()) { fs.put("expertFlag", expertFlag); } } if(withForceWriteFlag) { SimpleFieldSet forceWriteFlag = node.config.exportFieldSet(Config.RequestType.FORCE_WRITE_FLAG, false); if(!forceWriteFlag.isEmpty()) { fs.put("forceWriteFlag", forceWriteFlag); } } if(withShortDescription) { SimpleFieldSet shortDescription = node.config.exportFieldSet(Config.RequestType.SHORT_DESCRIPTION, false); if(!shortDescription.isEmpty()) { fs.put("shortDescription", shortDescription); } } if(withLongDescription) { SimpleFieldSet longDescription = node.config.exportFieldSet(Config.RequestType.LONG_DESCRIPTION, false); if(!longDescription.isEmpty()) { fs.put("longDescription", longDescription); } } if(withDataTypes) { SimpleFieldSet type = node.config.exportFieldSet(Config.RequestType.DATA_TYPE, false); if(!type.isEmpty()) { fs.put("dataType", type); } } if(identifier != null) fs.putSingle("Identifier", identifier); return fs; } @Override public String getName() { return name; } @Override public void run(FCPConnectionHandler handler, Node node) throws MessageInvalidException { throw new MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, "ConfigData goes from server to client not the other way around", null, false); } }