class Project implements Serializable, Runnable {

    protected Map<String, String> getProjectPropertiesMap(final Date now) {
        final Map<String, String> buildProperties = new HashMap<String, String>();

        buildProperties.put("projectname", name);

        buildProperties.put("label", label);

        // TODO: Shouldn't have CVS specific properties here
        buildProperties.put("cvstimestamp", CVSDateUtil.formatCVSDate(now));

        buildProperties.put("cctimestamp", DateUtil.getFormattedTime(now));
        buildProperties.put("cclastgoodbuildtimestamp", getLastSuccessfulBuild());
        buildProperties.put("cclastbuildtimestamp", getLastBuild());
        buildProperties.put("lastbuildsuccessful", String.valueOf(isLastBuildSuccessful()));
        buildProperties.put("buildforced", String.valueOf(getBuildForced()));
        if (projectConfig.getModificationSet() != null) {
            buildProperties.putAll(projectConfig.getModificationSet().getProperties());
        }
        if (additionalProperties != null && !additionalProperties.isEmpty()) {
            buildProperties.putAll(additionalProperties);
            additionalProperties.clear();
            additionalProperties = null;
        }
        return buildProperties;
    }

    public  Project();

}