Update of /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper2
In directory sc8-pr-cvs1:/tmp/cvs-serv16302/src/java/core/org/krysalis/ruper2
Modified Files:
StandardResourceUpdater.java ResourceUpdater.java
Added Files:
FileAssistant.java DefaultResourceUpdater.java
FileUpdater.java ClasspathUpdater.java
Removed Files:
IResourceUpdater.java
Log Message:
Attempt to bring closer to working w/ Anou's API.
--- NEW FILE: FileAssistant.java ---
/*
* Created on Aug 27, 2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.krysalis.ruper2;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.krysalis.ruper2.files.DefaultResourceFilenameAnalyzer;
import org.krysalis.ruper2.files.IResourceFilenameAnalyzer;
import org.krysalis.ruper2.resource.Resource;
import org.krysalis.ruper2.resource.ResourceSpecifier;
import org.krysalis.ruper2.util.io.ResolvedFile;
import org.krysalis.ruper2.util.net.VirtualResourceLocator;
import org.krysalis.version.util.SystemUtils;
/**
* @author arb_jack
*/
public class FileAssistant /* implements Referenceable */ {
private File m_baseFile = null;
private IResourceFilenameAnalyzer m_analyzer = null;
/**
*
*/
public FileAssistant() {
this(SystemUtils.getCWD());
}
/**
*
*/
public FileAssistant(File baseFile) {
m_analyzer =
new DefaultResourceFilenameAnalyzer(
new VirtualResourceLocator(ResolvedFile.resolve(baseFile)));
m_baseFile = baseFile;
}
/**
*
* Resolve a file (i.e. get absolute path) within the "context"
* of this API's baseFile (i.e. CWD or whatever)
*
* @param file
* @return
*/
public ResolvedFile resolveFile(Object file) {
return ResolvedFile.resolve(m_baseFile, file);
}
public List getResourceSpecifiersForFiles(List files)
throws RuperException {
List specifiers = new ArrayList();
for (Iterator i = files.iterator(); i.hasNext();) {
specifiers.add(getResourceSpecifierForFile(((File) i.next())));
}
return specifiers;
}
public ResourceSpecifier getResourceSpecifierForFile(File file)
throws RuperException {
Resource resource = m_analyzer.determineResource(file);
return resource.getSpecifier();
}
public static void main(String args[]) throws Exception {
String file = "test.jar";
if (args.length > 0)
file = args[0];
FileAssistant fa = new FileAssistant(SystemUtils.getCWD());
fa.getResourceSpecifierForFile(new File(file));
}
}
--- NEW FILE: FileUpdater.java ---
/*
* Created on Aug 27, 2003
*/
package org.krysalis.ruper2;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.krysalis.ruper2.log.Logger;
import org.krysalis.ruper2.messaging.ResourceRequest;
import org.krysalis.ruper2.query.ResourceQuery;
import org.krysalis.ruper2.query.ResourceQueryHelper;
import org.krysalis.ruper2.query.ResourceResult;
import org.krysalis.ruper2.query.ResourceResultHelper;
import org.krysalis.ruper2.repository.IRepository;
import org.krysalis.ruper2.repository.Repository;
import org.krysalis.ruper2.repository.RepositoryAttribute;
import org.krysalis.ruper2.repository.RepositoryConstants;
import org.krysalis.ruper2.repository.RepositorySet;
import org.krysalis.ruper2.repository.RepositorySetSortContext;
import org.krysalis.ruper2.repository.select.ActiveRepositorySelector;
import org.krysalis.ruper2.repository.select.LocalRepositorySelector;
import org.krysalis.ruper2.repository.select.RemoteRepositorySelector;
import org.krysalis.ruper2.util.io.ResolvedFile;
import org.krysalis.ruper2.util.text.MessageConstants;
import org.krysalis.ruper2.util.text.Messages;
/**
* @author arb_jack
*/
public class FileUpdater /* implements Referenceable */ {
private ResourceUpdater m_ruper = null;
private FileAssistant m_filer = null;
/**
*
*/
public FileUpdater() throws RuperException {
m_ruper = ResourceUpdater.getDefaultResourceUpdater();
m_filer = new FileAssistant();
}
/**
*
*/
public FileUpdater(
FileAssistant filer,
ResourceUpdater ruper) {
m_ruper = ruper;
m_filer = filer;
}
public void updateFiles(List files) throws RuperException {
for (Iterator i = files.iterator(); i.hasNext();) {
updateFile((File) i.next());
}
}
public void updateFiles(List files, IRepository target)
throws RuperException {
for (Iterator i = files.iterator(); i.hasNext();) {
updateFile((File) i.next(), target);
}
}
public void updateFiles(File file) throws RuperException {
ResolvedFile resolved = m_filer.resolveFile(file);
//All files in a folder...
if (!resolved.isDirectory()) {
updateFile(resolved);
}
else {
// We have a folder of files...
ResolvedFile folder = resolved;
File[] files = folder.listFiles();
Repository target =
new Repository(folder.getAbsolutePath(), folder, false);
// set the local repository attribute to true
target.setRepositoryAttribute(
new RepositoryAttribute(RepositoryConstants.REMOTE),
RepositoryConstants.FALSE);
for (int i = 0; i < files.length; ++i) {
File childFile = files[i];
updateFile(childFile, target);
}
}
}
public void updateFile(File file) throws RuperException {
ResolvedFile parentFolder =
m_filer.resolveFile(m_filer.resolveFile(file).getParent());
//
// A flat repository to put things
//
IRepository target =
new Repository(parentFolder.getAbsolutePath(), parentFolder, false);
updateFile(file, target);
}
public void updateFile(File file, IRepository target)
throws RuperException {
//
// Generate a request from the file
//
ResourceRequest request =
new ResourceRequest(
ResourceQueryHelper.getResourceSpecifierQuery(
m_filer.getResourceSpecifierForFile(file)));
//
// Extract the query for this request
//
ResourceQuery resourceQuery = request.getQuery();
Logger.getLog().debug(
Messages.getString(MessageConstants.RESOURCE_REQUEST, request));
//
// Perform the query on the remote repository
//
ResourceResult resourceResult =
queryRepository(RepositoryConstants.REMOTE, resourceQuery);
//
// Now perform same query over local (target) repo
//
RepositorySet localRepositorySet =
RepositorySet.getRepositorySet(RepositoryConstants.LOCAL, true);
localRepositorySet.addRepository(target);
resourceQuery.setRepositorySet(localRepositorySet);
ResourceResult targetResult =
queryRepository(RepositoryConstants.LOCAL, resourceQuery);
//
// Assuming we found something in the main search repositories...
//
if (!ResourceResultHelper.noResult(resourceResult)) {
// Compare Results Set using the OrderBy Comparator
if (ResourceResultHelper
.compareTo(
resourceResult,
targetResult,
resourceQuery.getOrderBy())
> 0) {
List resources =
ResourceResultHelper.getResourceList(resourceResult);
Logger.getLog().verbose(
Messages.getString(
MessageConstants.UPDATE_FOUND,
resources));
//
// Copy the resource to the repository
//
m_ruper.downloadResources(resources, target);
}
else
Logger.getLog().verbose(
Messages.getString(
MessageConstants.NO_UPDATE_FOUND,
resourceQuery));
}
else
Logger.getLog().verbose(
Messages.getString(
MessageConstants.NO_RESOURCES_FOUND,
resourceQuery));
}
private ResourceResult queryRepository(
String repositoryConstant,
ResourceQuery resourceQuery)
throws RuperException {
//
// get the sortcontext for remote repository
//
RepositorySetSortContext repositorySortContext =
RepositorySetSortContext.getRepositorySetSortContext(
repositoryConstant);
if (repositorySortContext == null) {
repositorySortContext =
RepositorySetSortContext.createRepositorySetSortContext(
repositoryConstant);
// add the remote selector and the active repository selector
repositorySortContext.addRepositorySelector(
new ActiveRepositorySelector());
if (repositoryConstant.equals(RepositoryConstants.REMOTE))
repositorySortContext.addRepositorySelector(
new RemoteRepositorySelector());
else if (repositoryConstant.equals(RepositoryConstants.LOCAL))
repositorySortContext.addRepositorySelector(
new LocalRepositorySelector());
}
resourceQuery.setRepositorySetSortContext(repositorySortContext);
return m_ruper.getRuperEngine().query(resourceQuery);
}
public ResourceResult determineFilesUpdates(String fileName)
throws RuperException {
return determineFilesUpdates(new File(fileName));
}
public ResourceResult determineFilesUpdates(File file)
throws RuperException {
ResourceResult result = null;
ResolvedFile resolved = m_filer.resolveFile(file);
if (!resolved.isDirectory()) {
result = determineFileUpdates(resolved);
}
else {
// We have a folder of files...
File folder = resolved;
File[] files = folder.listFiles();
for (int i = 0; i < files.length; ++i) {
File childFile = files[i];
//:TODO: add ResultHelper.merge
result = determineFileUpdates(childFile);
}
}
return result;
}
public ResourceResult determineFileUpdates(String fileName)
throws RuperException {
return determineFileUpdates(new File(fileName));
}
public ResourceResult determineFileUpdates(File file)
throws RuperException {
ResolvedFile resolved = m_filer.resolveFile(file);
ResourceRequest request =
new ResourceRequest(
ResourceQueryHelper.getResourceSpecifierQuery(
m_filer.getResourceSpecifierForFile(file)));
if (!resolved.isDirectory()) {
updateFile(file);
}
else {
// We have a folder of files...
ResolvedFile folder = resolved;
File[] files = folder.listFiles();
Repository target =
new Repository(folder.getAbsolutePath(), folder, false);
// set the local repository attribute to true
target.setRepositoryAttribute(
new RepositoryAttribute(RepositoryConstants.REMOTE),
RepositoryConstants.FALSE);
for (int i = 0; i < files.length; ++i) {
File childFile = files[i];
updateFile(childFile, target);
}
}
return m_ruper.getRuperEngine().performRequest(request);
}
public static void main(String args[]) throws Exception {
Logger.testInit();
String file = "lib/test.jar";
if (args.length > 0)
file = args[0];
FileUpdater fu = new FileUpdater(new FileAssistant(), new ResourceUpdater());
fu.updateFile(new File(file));
}
}
--- NEW FILE: ClasspathUpdater.java ---
/*
* Created on Aug 27, 2003
*/
package org.krysalis.ruper2;
import java.util.ArrayList;
import java.util.Iterator;
import org.krysalis.version.util.classpath.PathPart;
import org.krysalis.version.util.classpath.PathSet;
/**
* @author arb_jack
*/
public class ClasspathUpdater extends FileUpdater {
/**
* @param fileAPI
* @param ruperAPI
*/
public ClasspathUpdater(FileAssistant filer, ResourceUpdater ruper) {
super(filer, ruper);
}
public void updateClasspathFiles(final String classpathStr)
throws RuperException {
PathSet classpath = new PathSet(/* getIdentifier().getId() */
":TODO:", classpathStr);
updateClasspathFiles(classpath);
}
public void updateClasspathFiles(final PathSet classpath)
throws RuperException {
ArrayList files = new ArrayList();
for (Iterator i = classpath.iterator(); i.hasNext();) {
PathPart part = (PathPart) i.next();
files.add(part.getPart());
}
updateFiles(files);
}
}
Index: StandardResourceUpdater.java
===================================================================
RCS file: /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper2/StandardResourceUpdater.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** StandardResourceUpdater.java 7 Oct 2003 17:24:50 -0000 1.2
--- StandardResourceUpdater.java 10 Oct 2003 21:26:23 -0000 1.3
***************
*** 4,27 ****
package org.krysalis.ruper2;
- import org.krysalis.ruper2.impl.*;
import org.krysalis.ruper2.impl.ResourceUpdaterIdentifier;
/**
* @author arb_jack
*/
! public class StandardResourceUpdater extends DefaultResourceUpdaterEngine {
/**
! *
*/
! public StandardResourceUpdater() {
! super();
}
/**
! * @param identifier
*/
! public StandardResourceUpdater(final ResourceUpdaterIdentifier identifier) {
! super(identifier);
}
--- 4,41 ----
package org.krysalis.ruper2;
import org.krysalis.ruper2.impl.ResourceUpdaterIdentifier;
+
/**
* @author arb_jack
*/
! public class StandardResourceUpdater extends DefaultResourceUpdater {
!
/**
! * @param id
! * @throws RuperException
*/
! public StandardResourceUpdater(String id) throws RuperException {
! super(id);
! // TODO Auto-generated constructor stub
}
/**
! * @param id
! * @throws RuperException
*/
! public StandardResourceUpdater(ResourceUpdaterIdentifier id)
! throws RuperException {
! super(id);
! // TODO Auto-generated constructor stub
! }
!
! /**
! * @throws RuperException
! */
! public StandardResourceUpdater() throws RuperException {
! super();
! // TODO Auto-generated constructor stub
}
Index: ResourceUpdater.java
===================================================================
RCS file: /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper2/ResourceUpdater.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** ResourceUpdater.java 8 Oct 2003 13:23:23 -0000 1.7
--- ResourceUpdater.java 10 Oct 2003 21:26:23 -0000 1.8
***************
*** 11,14 ****
--- 11,16 ----
import java.util.Set;
+ import org.krysalis.ruper2.config.RuperConfig;
+ import org.krysalis.ruper2.impl.ReferenceManager;
import org.krysalis.ruper2.impl.ResourceUpdaterEngine;
import org.krysalis.ruper2.impl.ResourceUpdaterIdentifier;
***************
*** 24,27 ****
--- 26,31 ----
import org.krysalis.ruper2.resource.ResourceGroup;
import org.krysalis.ruper2.util.RuperConstants;
+ import org.krysalis.ruper2.util.identity.GenericIdentifier;
+ import org.krysalis.ruper2.util.reference.IReferenceable;
import org.krysalis.ruper2.util.text.MessageConstants;
import org.krysalis.ruper2.util.text.Messages;
***************
*** 30,34 ****
* @author anou_mana
*/
! public class ResourceUpdater implements IResourceUpdater {
// Options for configuring the Ruper
--- 34,47 ----
* @author anou_mana
*/
! public class ResourceUpdater implements IReferenceable {
!
! static {
! // Configure from the XML file...
! //:TODO: *Maybe* move later, or allow user to pass filename
! RuperConfig.configure();
! }
!
! // The identiy
! ResourceUpdaterIdentifier m_identifier = null;
// Options for configuring the Ruper
***************
*** 45,50 ****
*/
public ResourceUpdater(String id) throws RuperException {
! ResourceUpdaterIdentifier ruperId = new ResourceUpdaterIdentifier(id);
! m_ruperEngine = ResourceUpdaterEngine.getResourceUpdater(ruperId, true);
resourceConfigInit();
}
--- 58,73 ----
*/
public ResourceUpdater(String id) throws RuperException {
! m_identifier = new ResourceUpdaterIdentifier(id);
! m_ruperEngine = new ResourceUpdaterEngine();
! resourceConfigInit();
! }
!
! /**
! *
! */
! public ResourceUpdater(ResourceUpdaterIdentifier id)
! throws RuperException {
! m_identifier = id;
! m_ruperEngine = new ResourceUpdaterEngine();
resourceConfigInit();
}
***************
*** 56,60 ****
ResourceUpdaterIdentifier ruperId =
new ResourceUpdaterIdentifier(RuperConstants.DEFAULT);
! m_ruperEngine = ResourceUpdaterEngine.getResourceUpdater(ruperId, true);
resourceConfigInit();
}
--- 79,83 ----
ResourceUpdaterIdentifier ruperId =
new ResourceUpdaterIdentifier(RuperConstants.DEFAULT);
! m_ruperEngine = new ResourceUpdaterEngine();
resourceConfigInit();
}
***************
*** 146,150 ****
* @see org.krysalis.ruper2.api.ResourceAPIInterface#updateGroup(org.krysalis.ruper2.resource.ResourceGroup)
*/
! public void updateResourceGroup(ResourceGroup group) throws RuperException {
updateResourceGroup(group, null);
}
--- 169,174 ----
* @see org.krysalis.ruper2.api.ResourceAPIInterface#updateGroup(org.krysalis.ruper2.resource.ResourceGroup)
*/
! public void updateResourceGroup(ResourceGroup group)
! throws RuperException {
updateResourceGroup(group, null);
}
***************
*** 153,157 ****
* @see org.krysalis.ruper2.api.ResourceAPIInterface#updateGroup(org.krysalis.ruper2.resource.ResourceGroup)
*/
! public void updateResourceGroup(ResourceGroup group, IRepository targetRepository)
throws RuperException {
--- 177,183 ----
* @see org.krysalis.ruper2.api.ResourceAPIInterface#updateGroup(org.krysalis.ruper2.resource.ResourceGroup)
*/
! public void updateResourceGroup(
! ResourceGroup group,
! IRepository targetRepository)
throws RuperException {
***************
*** 388,392 ****
}
! public static void main(String[] args) {
}
--- 414,479 ----
}
! public static ResourceUpdater getDefaultResourceUpdater()
! throws RuperException {
! return getResourceUpdater(new ResourceUpdaterIdentifier(RuperConstants.DEFAULT), true);
! }
!
! public static ResourceUpdater getResourceUpdater(
! ResourceUpdaterIdentifier identifier,
! final boolean createIfRequired)
! throws RuperException {
!
! ResourceUpdater ruper = null;
!
! if (ReferenceManager.hasReference(identifier)) {
! ruper = (ResourceUpdater) ReferenceManager.getReference(identifier);
! }
! else {
! if (!createIfRequired)
! throw new RuperException(
! "Failed to access ResourceUpdater [" + identifier + "]");
!
! ruper = new ResourceUpdater(identifier);
!
! ReferenceManager.createReference(ruper);
! }
!
! return ruper;
! }
! /**
! * @return
! */
! public GenericIdentifier getIdentifier() {
! return m_identifier;
! }
!
! /**
! * @return
! */
! public IRepository getTargetRepository() {
! return m_targetRepository;
! }
!
! /**
! * @param map
! */
! public void setResourceConfigOptions(Map map) {
! m_resourceConfigOptions = map;
! }
!
! /**
! * @param repository
! */
! public void setTargetRepository(IRepository repository) {
! m_targetRepository = repository;
! }
!
! /**
! *
! * :TODO: temporary
! * @return
! */
! ResourceUpdaterEngine getRuperEngine() {
! return m_ruperEngine;
}
--- IResourceUpdater.java DELETED ---
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.