package com.gmail.dpierron.calibre.opds;
/**
* Constants used internally within the Calibre2opds program
* Assembled here to help with making them visible and easy to change.
* Note that some of these may not be true constants as they can be
* generated at runtime (particularily localized ones) but do not change
* once they have been genrated.
*/
import com.gmail.dpierron.calibre.configuration.Icons;
import com.gmail.dpierron.tools.i18n.Localization;
import com.gmail.dpierron.tools.Helper;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collection;
public class Constants {
public final static String PROGNAME = "calibre2opds";
public final static String PROGVERSION = "3.6";
public final static String BZR_VERSION = getBzrVersion();
public final static String CALIBRE_METADATA_DB_= "metadata.db";
public final static String NO = Localization.Main.getText("boolean.no");
public final static String YES = Localization.Main.getText("boolean.yes");
public final static String PROGTITLE = PROGNAME + " " + PROGVERSION;
public final static String LOGFILE_FOLDER = "log";
public final static String LOGFILE_NAME = "calibre2opds.log";
public final static String SYNCFILE_NAME = "synclog.log";
public final static String CONFIGURATION_COMPATIBILITY_VERSIONCHIP = "02030101";
public final static String LIBRARY_PATH_PREFIX = "../../";
public final static String PARENT_PATH_PREFIX = "../";
public final static String CURRENT_PATH_PREFIX = "./";
public final static String FOLDER_SEPARATOR = "/";
public final static String EXTENSION_SEPARATOR = ".";
public final static String LEVEL_SEPARATOR = "!";
public final static String TYPE_SEPARATOR = "_";
public final static String URN_SEPARATOR = ":";
public final static String SECURITY_SEPARATOR = "@";
public final static String ALLBOOKS_TYPE = "allbooks";
public final static String BOOK_TYPE ="book";
public final static String AUTHOR_TYPE = "author";
public final static String AUTHORLIST_TYPE = "authorlist";
public final static String SERIES_TYPE = "series";
public final static String SERIESLIST_TYPE = "serieslist";
public final static String TAG_TYPE = "tag";
public final static String TAGLIST_TYPE = "taglist";
public final static String TAGTREE_TYPE = "tagtree";
public final static String RATED_TYPE = "rated";
public final static String RECENT_TYPE = "recent";
public final static String PUBLISHER_TYPE = "publisher";
public final static String PUBLISHERLISTS_TYPE = "publisherlist";
public final static String FEATURED_TYPE = "featured";
public final static String CUSTOM_TYPE = "custom";
public final static String XML_EXTENSION = ".xml";
public final static String XSL_EXTENSION = ".xsl";
public final static String HTML_EXTENSION = ".html";
public final static String JPG_EXTENSION = ".jpg";
public final static String AUTHOREMAIL = "dpierron+calibre2opds@gmail.com";
public final static String AUTHORNAME = "David Pierron";
public final static String PAGE_DELIM = "_Page_";
public final static String PAGE_ONE_XML = "_Page_1.xml";
public final static String INITIAL_URL = "index";
public final static String INITIAL_URN_PREFIX = "Calibre2opds:";
public final static String TROOK_FOLDER_EXTENSION = ".library";
public final static String TROOK_SEARCH_DATABASE_FILENAME = "calibre2opds_trook_search.db";
public final static String TROOK_CATALOG_FILENAME = "_catalog.zip";
public final static String NOOK_CATALOG_FOLDERNAME = "_catalog";
public final static String CALIBRE_COVER_FILENAME = "cover.jpg";
public final static String DEFAULT_IMAGE_FILENAME = "default_image.jpg";
public final static String DEFAULT_THUMBNAIL_FILENAME = "thumbnail.jpg";
public final static String CATALOG_XSL = "catalog.xsl";
public final static String FULLENTRY_XSL = "fullentry.xsl";
public final static String HEADER_XSL = "header.xsl";
public final static String GENERATED_XSL = "generated.xsl";
// URL's for links from Help menu
public final static String HOME_URL = "http://calibre2opds.com/";
// public final static String PAYPAL_DONATION = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LJJYRJBYCW8EU";
public final static String PAYPAL_DONATION = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=V9R7W7GLLPFHA";
public final static String USERGUIDE_URL = "http://wiki.mobileread.com/wiki/Calibre2Opds_Index";
public final static String DEVELOPERGUIDE_URL = "http://wiki.mobileread.com/wiki/Calibre2OpdsDevelop";
public final static String LOCALIZE_URL = "http://wiki.mobileread.com/wiki/Calibre2OpdsLocalize";
public final static String CUSTOMIZE_URL = "http://wiki.mobileread.com/wiki/Calibre2OpdsCustomize";
public final static String ISSUES_URL = "http://calibre2opds.myjetbrains.com/youtrack/";
public final static String FORUM_URL = "https://www.mobileread.com/forums/forumdisplay.php?f=238";
// URL's into documentation to provide context sensitive help
public final static String HELP_URL_MAIN_OPTIONS = "http://wiki.mobileread.com/wiki/Calibre2OpdsRunning#Main_Options_Tab";
public final static String HELP_URL_CATALOGSTRUCTURE = "http://wiki.mobileread.com/wiki/Calibre2OpdsRunning#Catalog_Structure_Tab";
public final static String HELP_URL_BOOKDETAILS = "http://wiki.mobileread.com/wiki/Calibre2OpdsRunning#Book_Details_Tab";
public final static String HELP_URL_ADVANCED = "http://wiki.mobileread.com/wiki/Calibre2OpdsRunning#Advanced_Tab";
public final static String HELP_URL_EXTERNALLINKS = "http://wiki.mobileread.com/wiki/Calibre2OpdsRunning#Book_Links_tab";
public final static String HELP_URL_CUSTOMCATALOGS = "http://wiki.mobileread.com/wiki/Calibre2OpdsRunning#Custom_Catalogs_Tab";
public final static String HELP_URL_SEARCH = "http://wiki.mobileread.com/wiki/Calibre2OpdsRunning#Search_Criteria";
// Prefixes that are recognized as valid for external links to custom catalogs
public final static String CUSTOMCATALOG_OPDSURL = "OpdsURL:";
public final static String CUSTOMCATALOG_HTMLURL = "HtmlURL:";
public final static String CUSTOMCATALOG_OPDS = "opds://";
public final static String CUSTOMCATALOG_OPDSHTTP = "opds:http://";
public final static Collection<String> CUSTOMCATALOG_SEARCH_FIELD_URLS = Arrays.asList(CUSTOMCATALOG_OPDSURL,
CUSTOMCATALOG_HTMLURL,
"http://",
"https://",
CUSTOMCATALOG_OPDS,
CUSTOMCATALOG_OPDSHTTP,
"opds:https://");
public final static String CUSTOMCATALOG_DEFAULT_TITLE = Localization.Main.getText("default.title");
public final static String CUSTOMCATALOG_DEFAULT_SEARCH = Localization.Main.getText("default.value");
// Prefix used is a search field to indicate a Saved search
public final static String CUSTOMCATALOG_SEARCH_SAVED = "saved:";
// Keywords that are valid in searches(and thus as prefixes to search fields in GUI)
public final static Collection<String> CUSTOMCATALOG_SEARCH_FIELD_NAMES = Arrays.asList("authors:",
"langugages",
"publisher",
"rating",
"series",
"tags");
// List of custom column types we think we support!
public final static Collection<String> CUSTOM_COLUMN_TYPES_SUPPORTED = Arrays.asList("text",
"comments",
"float",
"int",
"bool",
"rating",
"datetime",
"enumeration");
// List of curstom column types that are known to not be supported (theren may be others we do jot know about)
public final static Collection<String> CUSTOM_COLUMN_TYPES_UNSUPPORTED = Arrays.asList("series");
public final static String MIMETYPES_FILENAME = "mimetypes.txt";
// List of file resources that are embedded in binary, and need copying to final catalog as files
public final static String[] FILE_RESOURCES = {
".skip", // Special dummy file for Nook catalogs
"desktop.css",
"mobile.css",
"homeIwebKit.png",
"navleft.png",
"functions.js",
"oval-red-left.gif",
"oval-red-right.gif",
"bg_button_a.gif",
"bg_button_span.gif",
"bc_bg.png",
"bc_separator.png",
"home.png",
MIMETYPES_FILENAME,
DEFAULT_IMAGE_FILENAME,
CATALOG_XSL,
FULLENTRY_XSL,
HEADER_XSL,
GENERATED_XSL,
// External image files for catalog sections
Icons.ICONFILE_RECENT,
Icons.ICONFILE_AUTHORS,
Icons.ICONFILE_TAGS,
Icons.ICONFILE_SERIES,
Icons.ICONFILE_BOOKS,
Icons.ICONFILE_ABOUT,
Icons.ICONFILE_RATING,
Icons.ICONFILE_FEATURED,
Icons.ICONFILE_CUSTOM,
Icons.ICONFILE_EXTERNAL,
Icons.ICONFILE_SEARCH,
"_search/search.html",
"_search/css/desktop.css",
"_search/database/database.js",
"_search/media/license-bsd.txt",
"_search/media/css/demo_page.css",
"_search/media/css/demo_table.css",
"_search/media/css/demo_table_jui.css",
"_search/media/images/back_disabled.jpg",
"_search/media/images/back_enabled.jpg",
"_search/media/images/favicon.ico",
"_search/media/images/forward_disabled.jpg",
"_search/media/images/forward_enabled.jpg",
"_search/media/images/Sorting icons.psd",
"_search/media/images/sort_asc.png",
"_search/media/images/sort_asc_disabled.png",
"_search/media/images/sort_both.png",
"_search/media/images/sort_desc.png",
"_search/media/images/sort_desc_disabled.png",
"_search/media/js/jquery.dataTables.min.js",
"_search/media/js/jquery.js",};
public final static String OPDS_ELEMENT_FEED = "feed";
public final static String OPDS_ELEMENT_ENTRY = "entry";
public final static String OPDS_ELEMENT_LINK = "link";
public final static String OPDS_ELEMENT_AUTHOR = "author";
public final static String OPDS_ELEMENT_NAME = "name";
public final static String OPDS_ELEMENT_URI = "uri";
public final static String OPDS_ELEMENT_EMAIL = "email";
public final static String HTML_ELEMENT_BREAK = "br";
public final static String HTML_ELEMENT_STRONG = "strong";
public final static String HTML_ELEMENT_PARAGRAPH = "p";
public final static String HTML_ELEMENT_ANCHOR = "a";
public static String getBzrVersion() {
String vcsVersion = "";
BufferedReader reader = null;
try {
try {
reader = new BufferedReader(new InputStreamReader(Constants.class.getResourceAsStream("/version_OpdsOutput.properties")));
vcsVersion = reader.readLine();
} finally {
if (reader != null)
reader.close();
}
} catch (Exception e) {
// we don't give a tiny rat's ass
}
if (Helper.isNotNullOrEmpty(vcsVersion))
vcsVersion = " (rev. " + vcsVersion + ")";
return vcsVersion;
}
}