class Storage: def __init__(self): self.actions = CopyOnWriteArrayList() self.currentId = AtomicInteger(0) def addAction(self, actionMeta): if list(filter(lambda action: action.name == actionMeta.name, self.actions)): raise Exception("The action {} has already been added".format(actionMeta.name)) self.actions.add(actionMeta) def getAction(self, name): return filter(lambda action: action.name == name, self.actions)[0] def updateAction(self, name, actionMeta): action = self.getAction(name) action.name = actionMeta.name action.label = actionMeta.label action.description = actionMeta.description action.callable = actionMeta.callable action.activatable = actionMeta.activatable
class Library: def __init__(self): self.books = CopyOnWriteArrayList() self.currentId = AtomicInteger(0) self.readOnly = False def addBook(self, author, title, cover=None, force=False): if list( filter( lambda book: book.author == author and book.title == title, self.books)): raise Exception("This book has already been added to the library") if not self.readOnly or force: self.books.add( Book(self.currentId.incrementAndGet(), author, title, cover)) def getBook(self, bookId): return filter(lambda book: book.id == bookId, self.books)[0] def updateBook(self, bookId, author, title, cover=None): book = self.getBook(bookId) if not self.readOnly: book.author = author book.title = title if cover: book.cover = cover def removeBook(self, bookId): if not self.readOnly: self.books.removeIf(PyPredicate(lambda book: book.id == bookId)) def findBooks(self, searchString): return list(filter(lambda book: searchString is None or re.search(searchString.upper(), book.author.upper())\ or re.search(searchString.upper(), book.title.upper()), self.books)) def getAuthors(self): return sorted(list(set(list(map(lambda book: book.author, self.books)))), key=lambda author: author.lower())
from java.util.logging import LogManager from java.util.concurrent import Executors, CopyOnWriteArrayList from java.io import File from com.threecrickets.scripturian.document import DocumentFileSource from com.threecrickets.scripturian.exception import DocumentNotFoundException from com.threecrickets.prudence.service import ApplicationService # # Common # common_libraries_document_source = DocumentFileSource('common/libraries/', File(document.source.basePath, 'common/libraries/'), 'default', 'py', 5000) common_fragments_document_source = DocumentFileSource('common/web/fragments/', File(document.source.basePath, 'common/web/fragments/'), 'index', 'py', 5000) common_tasks_document_sources = CopyOnWriteArrayList() common_tasks_document_sources.add(DocumentFileSource('common/tasks/', File(document.source.basePath, 'common/tasks/'), 'default', 'py', 5000)) common_handlers_document_sources = CopyOnWriteArrayList() common_handlers_document_sources.add(DocumentFileSource('common/handlers/', File(document.source.basePath, 'common/handlers/'), 'default', 'py', 5000)) document.librarySources.add(common_libraries_document_source) # # Utilities # def execute_or_default(name, default=None): try: document.execute(name) except DocumentNotFoundException: if default is None: default = '/defaults/' + name
# # Common # common_libraries_document_source = DocumentFileSource( 'common/libraries/', File(document.source.basePath, 'common/libraries/'), 'default', 'py', 5000) common_fragments_document_source = DocumentFileSource( 'common/web/fragments/', File(document.source.basePath, 'common/web/fragments/'), 'index', 'py', 5000) common_tasks_document_sources = CopyOnWriteArrayList() common_tasks_document_sources.add( DocumentFileSource('common/tasks/', File(document.source.basePath, 'common/tasks/'), 'default', 'py', 5000)) common_handlers_document_sources = CopyOnWriteArrayList() common_handlers_document_sources.add( DocumentFileSource('common/handlers/', File(document.source.basePath, 'common/handlers/'), 'default', 'py', 5000)) document.librarySources.add(common_libraries_document_source) # # Utilities # def execute_or_default(name, default=None):
url = fix_url(url) if len(url) > 0: if url[-1] == '/': url = url[:-1] router.attach(url, add_trailing_slash) language_manager = executable.manager # # Libraries # libraries_document_sources = CopyOnWriteArrayList() libraries_document_sources.add( DocumentFileSource(application_base + libraries_base_path, application_base_path + libraries_base_path, documents_default_name, 'py', minimum_time_between_validity_checks)) libraries_document_sources.add(common_libraries_document_source) # # Dynamic web # dynamic_web_document_source = DocumentFileSource( application_base + dynamic_web_base_path, application_base_path + dynamic_web_base_path, dynamic_web_default_document, 'py', minimum_time_between_validity_checks) fragments_document_sources = CopyOnWriteArrayList() fragments_document_sources.add( DocumentFileSource(application_base + fragments_base_path,