/*
* Copyright (C) 2012 Google 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 interactivespaces.domain.basic;
import interactivespaces.domain.PersistedObject;
import java.io.Serializable;
import java.util.Map;
/**
* A controller node in the space.
*
* @author Keith M. Hughes
*/
public interface SpaceController extends PersistedObject, Serializable {
/**
* @return the hostId
*/
String getHostId();
/**
* @param hostId
* the hostId to set
*/
void setHostId(String hostId);
/**
* @return the uuid
*/
String getUuid();
/**
* @param uuid
* the uuid to set
*/
void setUuid(String uuid);
/**
* @return the name
*/
String getName();
/**
* @param name
* the name to set
*/
void setName(String name);
/**
* @return the description
*/
String getDescription();
/**
* @param description
* the description to set
*/
void setDescription(String description);
/**
* Set the metadata for the space controller.
*
* <p>
* This removes the old metadata completely.
*
* @param metadata
* the metadata for the space controller (can be {@link null}
*/
void setMetadata(Map<String, Object> metadata);
/**
* Get the metadata for the space controller.
*
* @return the space controller's meta data
*/
Map<String, Object> getMetadata();
/**
* Get the controller configuration.
*
* @return can be {@code null}
*/
SpaceControllerConfiguration getConfiguration();
/**
* Set the controller configuration.
*
* @param configuration
* the configuration, can be {@code null}
*/
void setConfiguration(SpaceControllerConfiguration configuration);
/**
* Set the mode for this controller.
*
* @param mode
* mode to set
*/
void setMode(SpaceControllerMode mode);
/**
* Get the mode for this controller.
*
* @return mode of controller
*/
SpaceControllerMode getMode();
}