/**
* Copyright (C) 2008 Abiquo Holdings S.L.
*
* Licensed 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 com.abiquo.apiclient.domain;
import com.abiquo.model.rest.RESTLink;
import com.abiquo.model.transport.SingleResourceTransportDto;
import com.abiquo.server.core.appslibrary.DiskDto;
import com.abiquo.server.core.infrastructure.network.NicDto;
import com.abiquo.server.core.infrastructure.storage.DiskManagementDto;
import com.google.common.base.Predicate;
public final class Links
{
public static RESTLink create(final String rel, final String href, final String type)
{
RESTLink link = new RESTLink(rel, href);
link.setType(type);
return link;
}
public static RESTLink create(final String rel, final String href, final String type,
final String title)
{
RESTLink link = create(rel, href, type);
link.setTitle(title);
return link;
}
public static RESTLink withRel(final String newRel, final RESTLink source)
{
RESTLink link = create(newRel, source.getHref(), source.getType());
link.setTitle(source.getTitle());
return link;
}
public static RESTLink editOrSelf(final SingleResourceTransportDto dto)
{
RESTLink link = dto.getEditLink();
if (link == null)
{
link = dto.searchLink("self");
}
return link;
}
public static Predicate<RESTLink> isTemplateDisk()
{
return new Predicate<RESTLink>()
{
@Override
public boolean apply(final RESTLink input)
{
return input.getRel().startsWith(DiskDto.REL_PREFIX)
&& !input.getRel().equalsIgnoreCase("disks");
}
};
}
public static Predicate<RESTLink> isNic()
{
return new Predicate<RESTLink>()
{
@Override
public boolean apply(final RESTLink input)
{
return input.getRel().matches("^" + NicDto.REL_PREFIX + "[0-9]+$");
}
};
}
public static Predicate<RESTLink> isDisk()
{
return new Predicate<RESTLink>()
{
@Override
public boolean apply(final RESTLink input)
{
return input.getRel().matches("^" + DiskManagementDto.REL_PREFIX + "[0-9]+$");
}
};
}
private Links()
{
throw new AssertionError("Constant class. Clients shouldn't instantiate it directly.");
}
}