Commit 8c125081 authored by Christos Tranoris's avatar Christos Tranoris
Browse files

devices

parent c0062f1d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ public class ResourceApiRouteBuilder extends RouteBuilder {
		from( CATALOG_GET_RESOURCE_BY_CATEGORY )
		.log(LoggingLevel.DEBUG, log, CATALOG_GET_RESOURCE_BY_CATEGORY + " message received!")
		.to("log:DEBUG?showBody=true&showHeaders=true")
		.bean( resourceRepoService, "getResourcesByCategory(${header.category})")
		.bean( resourceRepoService, "getDetailedResourcesByCategory(${header.category})")
		.marshal().json( JsonLibrary.Jackson)
		.convertBodyTo( String.class );

+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public interface ResourceRepository extends JpaRepository<Resource, Long> {
	List<Resource> findByNameAndResourceVersion(String aname, String aversion);
	List<Resource> findByNameAndCategoryAndResourceVersion(String aname, String acategory, String aversion);

    List<Resource> findByCategory(String acategory);

	// Methods for metrics

+38 −1
Original line number Diff line number Diff line
@@ -206,7 +206,7 @@ public class ResourceRepoService {

    try {
      String sql = "SELECT " +
          "srv.uuid as id," +
          "srv.uuid as uuid," +
          "srv.type as type," +
          "srv.name as name," +
          "srv.category as category," +
@@ -247,6 +247,43 @@ public class ResourceRepoService {
    }
  }

  @Transactional
  public List<Resource> getDetailedResourcesByCategory(String categoryName) {
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    List<Resource> resources = new ArrayList<>();

    try {
      String hql = "FROM RIResource r WHERE r.category = :category ORDER BY r.name ASC";

      List<Resource> result = session.createQuery(hql, Resource.class)
          .setParameter("category", categoryName)
          .list();

      for (Resource r : result) {
        Hibernate.initialize(r.getRelatedParty());
        Hibernate.initialize(r.getNote());
        Hibernate.initialize(r.getResourceCharacteristic());
        Hibernate.initialize(r.getResourceSpecification());
        Hibernate.initialize(r.getResourceRelationship());
        Hibernate.initialize(r.getAttachment());
        Hibernate.initialize(r.getActivationFeature());
        resources.add(r);
      }

      tx.commit();
    } catch (Exception e) {
      if (tx != null && tx.isActive()) {
        tx.rollback();
      }
      logger.error("Error fetching detailed resources by category: " + categoryName, e);
    } finally {
      session.close();
    }

    return resources;
  }

  @Transactional
  public Resource addResource(@Valid ResourceCreate resource) {
    logger.info("Will add Resource: " + resource.getName());