added url and creationdate to repository

This commit is contained in:
Sebastian Sdorra
2010-09-19 17:00:29 +02:00
parent fbe74c8cd0
commit ff21849582
3 changed files with 193 additions and 8 deletions

View File

@@ -24,8 +24,11 @@ import sonia.scm.util.Util;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
@@ -87,6 +90,8 @@ public class HgRepositoryHandler implements RepositoryHandler
throws RepositoryException, IOException
{
repository.setId(UUID.randomUUID().toString());
repository.setUrl(buildUrl(repository.getName()));
repository.setCreationDate(new Date());
File directory = getDirectory(repository);
@@ -113,7 +118,7 @@ public class HgRepositoryHandler implements RepositoryHandler
File hgDirectory = new File(directory, ".hg");
writeHgrc(repository, hgDirectory);
storeRepository(repository, hgDirectory);
}
/**
@@ -187,7 +192,7 @@ public class HgRepositoryHandler implements RepositoryHandler
if (hgDirectory.exists())
{
writeHgrc(repository, hgDirectory);
storeRepository(repository, hgDirectory);
}
}
@@ -209,7 +214,7 @@ public class HgRepositoryHandler implements RepositoryHandler
if (hgDirectory.exists())
{
readHgrc(repository, hgDirectory);
loadRepository(repository, hgDirectory);
}
}
@@ -247,7 +252,7 @@ public class HgRepositoryHandler implements RepositoryHandler
repository = new Repository();
repository.setType(TYPE_NAME);
repository.setName(directory.getName());
readHgrc(repository, hgDirectory);
loadRepository(repository, hgDirectory);
if (!id.equals(repository.getId()))
{
@@ -382,13 +387,39 @@ public class HgRepositoryHandler implements RepositoryHandler
repository = new Repository();
repository.setType(TYPE_NAME);
repository.setName(name);
readHgrc(repository, hgDirectory);
repository.setUrl(buildUrl(name));
loadRepository(repository, hgDirectory);
}
}
return repository;
}
/**
* Method description
*
*
* @param name
*
* @return
*/
private String buildUrl(String name)
{
String url = config.getBaseUrl();
if (Util.isNotEmpty(url))
{
if (!url.endsWith("/"))
{
url = url.concat("/");
}
url = url.concat(name);
}
return url;
}
/**
* Method description
*
@@ -396,7 +427,7 @@ public class HgRepositoryHandler implements RepositoryHandler
* @param repository
* @param hgDirectory
*/
private void readHgrc(Repository repository, File hgDirectory)
private void loadRepository(Repository repository, File hgDirectory)
{
File hgrc = new File(hgDirectory, "hgrc");
@@ -441,6 +472,20 @@ public class HgRepositoryHandler implements RepositoryHandler
String id = scmSection.getParameter("id");
repository.setId(id);
String creationDateString = scmSection.getParameter("creationDate");
if (Util.isNotEmpty(creationDateString))
{
try
{
repository.setCreationDate(Util.parseDate(creationDateString));
}
catch (ParseException ex)
{
logger.log(Level.SEVERE, null, ex);
}
}
}
}
catch (IOException ex)
@@ -459,7 +504,7 @@ public class HgRepositoryHandler implements RepositoryHandler
*
* @throws IOException
*/
private void writeHgrc(Repository repository, File hgDirectory)
private void storeRepository(Repository repository, File hgDirectory)
throws IOException
{
INISection section = new INISection("web");
@@ -491,6 +536,13 @@ public class HgRepositoryHandler implements RepositoryHandler
scmSection.setParameter("id", repository.getId());
Date creationDate = repository.getCreationDate();
if (creationDate != null)
{
scmSection.setParameter("creationDate", Util.formatDate(creationDate));
}
INIConfiguration iniConfig = new INIConfiguration();
iniConfig.addSection(section);

View File

@@ -17,6 +17,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
@@ -29,7 +30,8 @@ import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "repositories")
@XmlType(propOrder =
{
"id", "type", "name", "contact", "description", "permissions"
"id", "type", "name", "contact", "description", "creationDate", "url",
"permissions"
})
public class Repository implements Serializable
{
@@ -102,6 +104,17 @@ public class Repository implements Serializable
return contact;
}
/**
* Method description
*
*
* @return
*/
public Date getCreationDate()
{
return creationDate;
}
/**
* Method description
*
@@ -157,6 +170,17 @@ public class Repository implements Serializable
return type;
}
/**
* Method description
*
*
* @return
*/
public String getUrl()
{
return url;
}
//~--- set methods ----------------------------------------------------------
/**
@@ -170,6 +194,17 @@ public class Repository implements Serializable
this.contact = contact;
}
/**
* Method description
*
*
* @param creationDate
*/
public void setCreationDate(Date creationDate)
{
this.creationDate = creationDate;
}
/**
* Method description
*
@@ -225,11 +260,25 @@ public class Repository implements Serializable
this.type = type;
}
/**
* Method description
*
*
* @param url
*/
public void setUrl(String url)
{
this.url = url;
}
//~--- fields ---------------------------------------------------------------
/** Field description */
private String contact;
/** Field description */
private Date creationDate;
/** Field description */
private String description;
@@ -244,4 +293,7 @@ public class Repository implements Serializable
/** Field description */
private String type;
/** Field description */
private String url;
}

View File

@@ -15,7 +15,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -26,6 +31,9 @@ import java.util.logging.Logger;
public class Util
{
/** Field description */
public static final String DATE_PATTERN = "yyyy-MM-dd HH-mm-ss";
/** Field description */
private static final Logger logger = Logger.getLogger(Util.class.getName());
@@ -100,6 +108,79 @@ public class Util
}
}
/**
* Method description
*
*
* @param date
* @param tz
*
* @return
*/
public static String formatDate(Date date, TimeZone tz)
{
SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
if (tz != null)
{
sdf.setTimeZone(tz);
}
return sdf.format(date);
}
/**
* Method description
*
*
* @param date
*
* @return
*/
public static String formatDate(Date date)
{
return formatDate(date, null);
}
/**
* Method description
*
*
* @param dateString
* @param tz
*
* @return
*
* @throws ParseException
*/
public static Date parseDate(String dateString, TimeZone tz)
throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
if (tz != null)
{
sdf.setTimeZone(tz);
}
return sdf.parse(dateString);
}
/**
* Method description
*
*
* @param dateString
*
* @return
*
* @throws ParseException
*/
public static Date parseDate(String dateString) throws ParseException
{
return parseDate(dateString, null);
}
//~--- get methods ----------------------------------------------------------
/**