/*
* Copyright (C) 2013 Intel Corporation
* All rights reserved.
*/
package com.intel.mtwilson.v2.file.resource;
import com.intel.mtwilson.v2.file.resource.Files;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.intel.mtwilson.v2.file.model.*;
import com.intel.mtwilson.jaxrs2.server.resource.DocumentRepository;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
*
* @author jbuhacoff
*/
public class FileRepository implements DocumentRepository<File,FileCollection,FileFilterCriteria,FileLocator> {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Files.class);
private ObjectMapper mapper;
public FileRepository() {
mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
}
@Override
@RequiresPermissions("files:search")
public FileCollection search(FileFilterCriteria criteria) {
try {
log.debug("File search: {}", mapper.writeValueAsString(criteria));
}
catch(Exception e) {
log.debug("Error - cannot log file search", e);
}
FileCollection files = new FileCollection();
File file = new File();
file.setName("testfile");
file.setContentType("text/plain");
file.setContent(null);
files.getFiles().add(file);
return files;
}
@Override
@RequiresPermissions("files:retrieve")
public File retrieve(FileLocator locator) {
// String id = locator.id;
log.debug("File retrieve: {}", locator.id);
// if( !UUID.isValid(id) ) { return null; }
File file = new File();
// file.setId(UUID.valueOf(id));
file.setId(locator.id);
file.setName("testfile");
file.setContentType("text/plain");
file.setContent(null);
file.getMeta().put("content_href", String.format("/files/%s/content", locator.id.toString()));
return file;
}
@RequiresPermissions("files:retrieve")
public File retrieveWithContent(FileLocator locator) {
// String id = locator.id;
log.debug("File retrieve: {}", locator.id);
// if( !UUID.isValid(id) ) { return null; }
File file = new File();
// file.setId(UUID.valueOf(id));
file.setId(locator.id);
file.setName("testfile");
file.setContentType("text/plain");
file.setContent("simulated content here");
file.getMeta().put("content_href", String.format("/files/%s/content", locator.id.toString()));
return file;
}
@Override
@RequiresPermissions("files:create")
public void create(File item) {
try {
log.debug("File create: {}", mapper.writeValueAsString(item));
}
catch(Exception e) {
log.debug("Error - cannot log file create", e);
}
// store it...
}
@Override
@RequiresPermissions("files:store")
public void store(File item) {
try {
log.debug("File store: {}", mapper.writeValueAsString(item));
}
catch(Exception e) {
log.debug("Error - cannot log file store", e);
}
// store it...
}
@Override
@RequiresPermissions("files:delete")
public void delete(FileLocator locator) {
log.debug("File delete: {}", locator.id.toString());
}
@Override
@RequiresPermissions("files:delete")
public void delete(FileFilterCriteria criteria) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}