/* * [Overview.java] * * Summary: The Replicator Oveview of Classes and files. * * Copyright: (c) 2002-2017 Roedy Green, Canadian Mind Products, http://mindprod.com * * Licence: This software may be copied and used freely for any purpose but military. * http://mindprod.com/contact/nonmil.html * * Requires: JDK 1.8+ * * Created with: JetBrains IntelliJ IDEA IDE http://www.jetbrains.com/idea/ * * Version History: * 10.2 2009-04-03 tidy up code to check presence of necessary files to make it more WORA. * Basically it collects files that have changed since last distribution * and bundles them into zip files for upload to a website. * Receivers download a manifest describing the zips available and automatically * download and unpack only what they don't already have. */ package com.mindprod.replicatorcommon; /** * The Replicator Oveview of Classes and files. *

* C L A S S E S *

* Replicator * GUI to ask client for config info. MAIN for receiver * Changes Notice changes in set of files distributed. * Clump Clump files into zips. * Config Configuration constants common to sender and receiver. * ConfigForReceiver Receiver config parameters. * ConfigForSender Configuration parameters for the sender. * Deletions Handle files deleted since last distribution. * Distribute Arrange for various auxiliary files to be distributed. * FD File Descriptor. * FetchZips FetchZips zips from website and unpack them for client. * Gather Gather files to distribute. * IO Misc IO, e.g. ensure directory exists. * MiniFD Miniature version of File descriptor for client. * MiniZD Miniature version of Zip descriptor for client. * MultiProperties gets multivalued properties from a *.properties file. * Overview This overview documentation. * ReplicatorSender * ReplicatorSender sender state. MAIN for sender. Handles untouching. * PersistConfigForReceiver ReplicatorSender receiver's config via JNLP and registry, save and get. * ProcessZips Process zip files for distribution. Does COMPACTING. * ReceiverAuthenticator Provides Userid/Password if needed to HTTP * Retire Decide which old zip files to retire. * StatsForSender Track statistics. * Traverse Traverse a directory tree finding all files. * Upload handles upload of files to website * Via what we do differently depending on mode of delivery * ViaForReceiver via methods used only by receiver * ViaForSender via methods used only by sender * MaxiZD Zip descriptor. *

* F I L E S *

* class compiled Java classes * java Java source code * build.xml ANT scripts to build * zipdetailedmanifest.ser MiniFD[] list of all files in distribution, optional for client. Used to verify. * does not include any deleted or obsolete files, or delete commands. * freshness.ser tracks ages of aux files, not the zips. * created in replicatorsender.Distribute.distributeFreshness * read in replicator.FetchZips.refreshAuxFiles * MiniFD[] * mindprodcert2017rsa.cer public key code signing certificate * zipmanifest.ser list of current zips with dates used by client to decide what to download. * created on server in replicatorsender.ReplicatorSender.prepareManifest * read on client in replicator.FetchZips/unpackManifest * MiniZD[] without emaciated zips. * plan.txt notes on work to do. * prep.bat prepare for Roedy * prepare.btm prepare a set of zips for distribution. * receiver.ser persistent state of client target. Remembers what was doing last. * Purely client side. * created in replicator.FetchZips.saveState * read in replicator.FetchZips.restoreStateFromReceiverSer. * miniZD -- just name of most recently processed file (with date). * replicator.jar jar for Web Start receiver side. * xxxreplicator.properties Master configuration file for sender. * replicatorreceiver.jar class files to run the client receiver. * replicatorreceiverlan.jnlp Java web Start declarations for download from a LAN * replicatorreceiverrelay.jnlp Java web Start declarations for download zips, for later relay to offnet clients * replicatorreceivertest.jnlp Java web Start declarations for download from sending site, loopback TEST. * replicatorreceiverwebsite.jnlp Java web Start declarations for download from a Website. * replicatorsender.jar class files to run the sender. * replicatorsender.exe JET native compiled Java for sender. * sender.ser persistent state of sender. Remembers what was doing last. * This is the key *.ser file for the sender. All others are generated from this. * In program dir, NOT in send staging dir. Not sent to clients. * lives in E:\com\mindprod\replicator\sender.ser * created in replicatorSender.ReplicatorSender.saveStateToSenderSer * read in replicatorSender.ReplicatorSender.restoreStateFromSenderSer * zips include emaciated etc. * has nextZipNumber, estimates (sizes), allZips, * oldFilesDistributed, FilesDeleted * upload.bat call netload or similar to upload the staging directory * z999.zip compressed files for distribution. Also contain out of date files. * files-to-delete are marked with a 'deleted' zip comment and an empty body. *

* V O C A B U L A R Y *

* sender central site from which files are distributed, sometimes called source or master. * receiver client target site that picks up zips and unpacks them. * staging directory directory where zips are stored in the process of transporting them. * There is a staging directory both at the sender and the receiver. *

* F U T U R E S * thumbdrive support * way to programmatically cause people to start from scratch or convert * old format files if change file formats. * check out possibility of making CASE_SENSITIVE a standard property. * * @author Roedy Green, Canadian Mind Products * @version 10.2 2009-04-03 tidy up code to check presence of necessary files to make it more WORA. * Basically it collects files that have changed since last distribution * and bundles them into zip files for upload to a website. * Receivers download a manifest describing the zips available and automatically * download and unpack only what they don't already have. * @since 2002 */