view src/nabble/model/Site.java @ 22:b0e75dfe1853

change isSemiprivate to isNew
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 13 Jun 2020 22:59:17 -0600
parents aba8ed4c8a06
children 5ea557eece1f
line wrap: on
line source

package nabble.model;

import fschmidt.db.DbDatabase;
import fschmidt.db.DbObject;
import fschmidt.db.NoKey;
import nabble.naml.compiler.Program;
import nabble.naml.compiler.Template;
import nabble.naml.compiler.CompileException;
import nabble.model.export.NodeData;

import java.io.File;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;


public interface Site extends Message.Source, DbObject<NoKey,SiteImpl> {
	public DbDatabase getDb();
	public long getId();
	public Node getRootNode();
	public Date getWhenCreated();
	public Program getProgram();
	public Template getTemplate(String templateName,Class... base);
	public void setCustomDomain(String customDomain);
	public String getCustomDomain();
	public String getBaseUrl();
	public int getActivity();
	public boolean isEmbarrassing();
	public void setEmbarrassing(boolean isEmbarrassing);
	public Date getDeleteDate();
	public void clearDeleteDate();
	public void deleteRootNode() throws ModelException;  // root must have one child
	public void delete();

	public User getUser(long id);
	public User getUserFromEmail(String email);
	public User getUserFromName(String name);
	public User getOrCreateUnregisteredUser(String email,String name) throws ModelException;
	public User getOrCreateUser(String email);
	public User getOrCreateUser(String email,String name);  // for export/import
	public String newRegistration(String email,String password,String name,String nextUrl) throws ModelException;
	public User getRegistration(String registrationKey) throws ModelException;

	public List<User> getUsers(String cnd);
	public List<User> getUsersByNodeCount(int i, int n, String cnd);
	public int getUserCount(String cnd);

	public Person getAnonymous(String cookie, String name);
	public Person getPerson(String id);

	public void addTag(Node node,User user,String label);
	public void deleteTags(Node node,User user,String sqlCondition);
	public void deleteTags(String sqlCondition);  // doesn't clear caches
	public boolean hasTags(Node node,User user,String sqlCondition);
	public int countTags(String sqlCondition);
	public List<String> findTagLabels(String sqlCondition);
	public List<User> findTagUsers(String sqlCondition);
	public List<Long> findTagUserIds(String sqlCondition);
	public List<Node> findTagNodes(String sqlCondition);
	public List<Long> findTagNodeIds(String sqlCondition);

	public boolean isNew();
	public void setNew(boolean isNew);

	public boolean isModuleEnabled(String moduleName);
	public void setModuleEnabled(String moduleName,boolean isEnabled);
	public Map<String,String> getCustomTweaks();
	public void setCustomTweaks(Map<String,String> tweaks);
	public boolean setTweakException(CompileException tweakException);
	public CompileException getTweakException();
	public void update();
	public Site getGoodCopy();

	// moved from ModelHome
	public Node getNode(long id);
	public Node getNode(ResultSet rs) throws SQLException;
	public Collection<? extends Node> getNodes(Collection<Long> ids);
	public NodeIterator<? extends Node> getNodeIterator(String sql,DbParamSetter paramSetter);

	public String getProperty(String key);
	public void setProperty(String key,String value);

	public boolean isValidConfiguration(String name);
	public void deleteConfiguration(String name);
	public void saveConfiguration(String name,String value,String naml);
	public String getConfigurationValue(String name);
	public String getConfigurationTweak();

	public String getNextUrl(String registrationKey);
	public Node newNode(NodeData data) throws ModelException;
	public Collection<Node> cacheLastNodes(Collection<Node> nodes);

	public <T> T getExtension(ExtensionFactory<Site,T> factory);
	public void addTask(String task);

	public File backup();
	public void backup(String filename);
	public void backupSchema(String filename);
}