Mercurial Hosting > nabble
view src/nabble/model/export/AbstractImportImpl.java @ 47:72765b66e2c3
remove mailing list code
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 18 Jun 2021 17:44:24 -0600 |
parents | 7ecd1a4ef557 |
children |
line wrap: on
line source
package nabble.model.export; import fschmidt.db.SQLRuntimeException; import fschmidt.util.java.ProxyIntoThread; import nabble.model.ModelException; import nabble.model.Node; import nabble.model.Site; import nabble.view.lib.Jtp; import nabble.view.web.template.UrlMapperNamespace; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.regex.Matcher; import java.util.regex.Pattern; public abstract class AbstractImportImpl implements Import { private static final Logger logger = LoggerFactory.getLogger(AbstractImportImpl.class); final Site site; private ProxyIntoThread pit = null; private boolean isStarted = false; private boolean isClosed = false; AbstractImportImpl(Site site) { this.site = site; } protected abstract String createNode(NodeData data) throws ModelException; protected abstract void start(); protected abstract void end(); void setProxy(ProxyIntoThread<Import> pit) { this.pit = pit; } /* public Pattern[] getRedirectUrlPatterns() { Pattern rootPtn = Pattern.compile("http://.+\\.(\\d+)\\..+/"); Pattern appPtn = Pattern.compile("-f(\\d+)\\.html$"); Pattern postPtn = Pattern.compile("-td(\\d+)\\.html$"); Pattern postPermalinkPtn = Pattern.compile("-tp\\d+p(\\d+)\\.html$"); return new Pattern[] { appPtn, postPtn, postPermalinkPtn, rootPtn }; } */ private static final Pattern[] redirectUrlPatterns = new Pattern[]{ Pattern.compile("-td(\\d+)\\.html$"), // post Pattern.compile("-tp(\\d+)\\.html$"), // topic permalink Pattern.compile("-tp\\d+p(\\d+)\\.html$"), // post permalink }; public long getNodeId(String permalink) throws BadLink { Node node = UrlMapperNamespace.getNodeFromUrl(permalink); if( node != null ) return node.getId(); for (Pattern p : redirectUrlPatterns) { Matcher m = p.matcher(permalink); if (m.find()) { String s = m.group(m.groupCount()); return Long.parseLong(s); } } throw new BadLink(); } public String importNode(NodeData data) { if( isClosed ) throw new RuntimeException("Closed"); if( !isStarted ) { start(); isStarted = true; } try { return createNode(data); } catch(ModelException e) { logger.error("node "+data.exportId + " / data.exportId=" + data.exportId, e); throw new RuntimeException(e.toString()); } catch(SQLRuntimeException e) { logger.error("node "+data.exportId + " / data.exportId=" + data.exportId, e); throw new RuntimeException(e.toString()); } } Node getNode(long nodeId) { return site.getNode(nodeId); } public void close() { isClosed = true; if (pit != null) { pit.stop(); pit = null; } end(); } @Override protected void finalize() throws Throwable { try { if( !isClosed ) { logger.error("import not closed"); close(); } } finally { super.finalize(); } } }