blob: f2a7d5a520cf84d2b524ad43ee0f19623aef2e85 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.felix.bundlerepository.impl;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.apache.felix.bundlerepository.Resource;
import org.apache.felix.bundlerepository.Repository;
public class RepositoryImpl implements Repository
{
private String m_name = null;
private long m_lastmodified = System.currentTimeMillis();
private String m_uri = null;
private Resource[] m_resources = null;
private Referral[] m_referrals = null;
private Set m_resourceSet = new HashSet();
public RepositoryImpl()
{
}
public RepositoryImpl(Resource[] resources)
{
m_resources = resources;
}
public String getURI()
{
return m_uri;
}
protected void setURI(String uri)
{
m_uri = uri;
}
public Resource[] getResources()
{
if (m_resources == null)
{
m_resources = (Resource[]) m_resourceSet.toArray(new Resource[m_resourceSet.size()]);
Arrays.sort(m_resources, new ResourceComparator());
}
return m_resources;
}
public void addResource(Resource resource)
{
// Set resource's repository.
if (resource instanceof ResourceImpl)
{
((ResourceImpl) resource).setRepository(this);
}
// Add to resource array.
m_resourceSet.remove(resource);
m_resourceSet.add(resource);
m_resources = null;
}
public Referral[] getReferrals()
{
return m_referrals;
}
public void addReferral(Referral referral) throws Exception
{
// Add to resource array.
if (m_referrals == null)
{
m_referrals = new Referral[] { referral };
}
else
{
Referral[] newResources = new Referral[m_referrals.length + 1];
System.arraycopy(m_referrals, 0, newResources, 0, m_referrals.length);
newResources[m_referrals.length] = referral;
m_referrals = newResources;
}
}
public String getName()
{
return m_name;
}
public void setName(String name)
{
m_name = name;
}
public long getLastModified()
{
return m_lastmodified;
}
public void setLastModified(long lastModified)
{
m_lastmodified = lastModified;
}
public void setLastModified(String s)
{
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmss.SSS");
try
{
m_lastmodified = format.parse(s).getTime();
}
catch (ParseException ex)
{
}
}
/**
* Default setter method when setting parsed data from the XML file,
* which currently ignores everything.
**/
protected Object put(Object key, Object value)
{
// Ignore everything for now.
return null;
}
}