<extension name='delltrainingcommercewebservices'/>
<itemtype code="StudentDetails" autocreate="true" generate="true">
<deployment table="StudentTable" typecode="15020"/>
<attributes>
<attribute qualifier="studentId" type="java.lang.String">
<description>Student Id</description>
<modifiers unique="true" read="true" write="true" search="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="studentName" type="java.lang.String">
<description>Student Name</description>
<modifiers read="true" write="true" search="true" />
<persistence type="property"/>
</attribute>
<attribute qualifier="studentPlace" type="java.lang.String">
<description>Students Place name</description>
<modifiers read="true" write="true" search="true"/>
<persistence type="property"/>
</attribute>
<attribute qualifier="studentGuardian" type="java.lang.String">
<description>Student Guardian Name</description>
<modifiers read="true" write="true" search="true"/>
<persistence type="property"/>
</attribute>
</attributes>
</itemtype>
INSERT_UPDATE StudentDetails;studentId[unique=true];studentName;studentPlace;studentGuardian
;101;Guldu;Bangalore;Rahul
;102;Nayna;Hyderabad;Vivek
package org.training.core.Dao;
import de.hybris.platform.servicelayer.internal.dao.Dao;
import org.anchor.model.StudentDetailsModel;
import java.util.List;
public interface StudentDao extends Dao
{
List<StudentDetailsModel> getStudentDetailsByCode(String studentId);
}
package org.training.core.Dao.impl;
import de.hybris.platform.servicelayer.internal.dao.AbstractItemDao;
import de.hybris.platform.servicelayer.search.SearchResult;
import de.hybris.platform.servicelayer.util.ServicesUtil;
import org.training.core.Dao.StudentDao;
import org.training.model.StudentDetailsModel;
import org.apache.log4j.Logger;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StudentDaoImpl extends AbstractItemDao implements StudentDao
{
private static final Logger LOGGER= Logger.getLogger(StudentDaoImpl.class);
private static final String STUDENT_QUERY="SELECT{" +StudentDetailsModel.PK+ "}FROM{"+StudentDetailsModel._TYPECODE+ "}WHERE{" +StudentDetailsModel.STUDENTID+ "}=?code";
@Override
public List<StudentDetailsModel> getStudentDetailsByCode(String studentId)
{
ServicesUtil.validateParameterNotNull(studentId,"Student ID must not be null");
final Map<String, Object> params =new HashMap<>();
params.put("code",studentId);
LOGGER.info(getFlexibleSearchService().search(STUDENT_QUERY,params).getClass());
final SearchResult<StudentDetailsModel> student=getFlexibleSearchService().search(STUDENT_QUERY,params);
return student.getResult()==null ? Collections.emptyList(): student.getResult();
}
}
<alias name="studentDao" alias="studentDao"/>
<bean id="studentDao" class="org.training.core.Dao.impl.StudentDaoImpl">
<property name="flexibleSearchService" ref="flexibleSearchService"/>
<property name="modelService" ref="modelService"/>
</bean>
package org.training.core.service;
import org.training.core.Dao.StudentDao;
import org.training.model.StudentDetailsModel;
import javax.annotation.Resource;
import java.util.List;
public class StudentServices
{
@Resource
private StudentDao studentDao;
public List<StudentDetailsModel> getStudentDetails(final String studentId)
{
List<StudentDetailsModel> studentModels=studentDao.getStudentDetailsByCode(studentId);
return studentModels;
}
}
<bean id="studentServices" class="org.training.core.service.StudentServices"/>
<bean class="de.hybris.platform.commercefacades.Student.data.StudentData">
<property name="studentId" type="java.lang.String"/>
<property name="studentName" type="java.lang.String"/>
<property name="studentPlace" type="java.lang.String"/>
<property name="studentGuardian" type="java.lang.String"/>
</bean>
package org.training.facades.populators;
import de.hybris.platform.commercefacades.Student.data.StudentData;
import de.hybris.platform.converters.Populator;
import de.hybris.platform.servicelayer.dto.converter.ConversionException;
import org.training.model.StudentDetailsModel;
public class StudentPopulator implements Populator<StudentDetailsModel, StudentData>
{
@Override
public void populate(final StudentDetailsModell source, final StudentData target)
throws ConversionException
{
target.setStudentId(source.StudentId());
target.setStudentPlace(source.getStudentPlace());
target.setStudentName(source.getStudentName());
target.setStudentGuardian(source.getStudentGuardian());
}
}
package org.training.facades.student;
import de.hybris.platform.commercefacades.Student.data.StudentData;
import java.util.List;
public interface StudentFacade
{
public List<StudentData> getStudentDetails(String studentId);
}
package org.trainng.facades.student.impl;
import de.hybris.platform.commercefacades.Student.data.StudentData;
import de.hybris.platform.converters.Converters;
import de.hybris.platform.servicelayer.dto.converter.Converter;
import java.util.List;
import org.training.core.service.StudentServices;
import org.training.facades.student.StudentFacade;
import org.training.model.StudentDetailsModel;
public class StudentFacadeImpl implements StudentFacade
{
private StudentServices studentServices;
private Converter<StudentDetailsModel, StudentData> studentConverter;
@Override
public List<StudentData> getStudentDetails(final String studentId)
{
final List<StudentDetailsModel> studentDetailsModels = studentServices.getStudentDetails(studentId);
return Converters.convertAll(studentDetailsModels, getStudentConverter());
}
public StudentServices getStudentServices()
{
return studentServices;
}
public void setStudentServices(final StudentServices studentServices)
{
this.studentServices = studentServices;
}
public Converter<StudentDetailsModel, StudentData> getStudentConverter()
{
return studentConverter;
}
public void setStudentConverter(final Converter<StudentDetailsModel, StudentData> studentConverter)
{
this.studentConverter = studentConverter;
}
}
<alias name="studentFacade" alias="studentFacade"/>
<bean id="studentFacade" class="org.training.facades.student.impl.StudentFacadeImpl">
<property name="studentServices" ref="studentServices"/>
<property name="studentConverter" ref="studentConverter"/>
</bean>
<alias name="studentConverter" alias="studentConverter"/>
<bean id="studentConverter" parent="abstractPopulatingConverter">
<property name="targetClass" value="de.hybris.platform.commercefacades.Student.data.StudentData"/>
<property name="populators">
<list>
<ref bean="studentPopulator"/>
</list>
</property>
</bean>
<bean id="studentPopulator" class="org.training.facades.populators.StudentPopulator"/>
<bean class="de.hybris.platform.commercewebservicescommons.dto.Student.StudentDataWSDTO">
<property name="studentId" type="java.lang.String"/>
<property name="studentName" type="java.lang.String"/>
<property name="studentPlace" type="java.lang.String"/>
<property name="studentGuardian" type="java.lang.String"/>
</bean>
<bean class="de.hybris.platform.commercewebservicescommons.dto.Student.StudentDataListWSDTO">
<property name="student" type="java.util.List <de.hybris.platform.commercewebservicescommons.dto.Student.StudentDataWSDTO>"/>
</bean>
<bean class="org.anchor.queues.data.StudentDataList">
<property name="student" type="java.util.List <de.hybris.platform.commercefacades.Student.data.StudentData>"/>
</bean>
<requires-extension name="trainingfacades"/>
package org.training.v2.controller;
import de.hybris.platform.commercewebservicescommons.dto.Student.StudentDataListWSDTO;
import de.hybris.platform.webservicescommons.swagger.ApiBaseSiteIdParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.Authorization;
import org.training.facades.student.StudentFacade;
import org.training.queues.data.StudentDataList;
import org.apache.log4j.Logger;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@Controller
@RequestMapping(value="/{baseSiteId}")
@Api(tags="Student")
public class StudentController extends BaseCommerceController
{
private static final Logger LOGGER= Logger.getLogger(StudentController.class);
@Resource(name="studentFacade")
private StudentFacade studentFacade;
@Secured("ROLE_TRUSTED_CLIENT")
@RequestMapping(value="/{studentId}", method= RequestMethod.GET)
@ResponseBody
@ApiOperation(nickname="getStudentDetails", value="Get a Specific Student Details",
notes="Return a specific Student based on studentId",authorizations={@Authorization
(value="oauth2_client_credentials")})
@ApiBaseSiteIdParam
public StudentDataListWSDTO getStudentDetails(@ApiParam(value="studentId", required=true)
@PathVariable
final String studentId,@ApiParam(value="Response configuaration. This is the list of filelds that should be returned in the response body",allowableValues="BASIC,DEFAULT,FULL")
@RequestParam(defaultValue=DEFAULT_FIELD_SET) final String fields)
{
LOGGER.info("Student is "+studentId);
final StudentDataList studentDataList=new StudentDataList();
studentDataList.setStudent(studentFacade.getStudentDetails(studentId));
return getDataMapper().map(studentDataList,StudentDataListWSDTO.class,fields);
}
}
<bean id="studentFieldMapper" parent="fieldMapper">
<property name="sourceClass" value="de.hybris.platform.commercefacades.Student.data.StudentData"/>
<property name="destClass" value="de.hybris.platform.commercewebservicescommons.dto.Student.StudentDataWSDTO"/>
</bean>
<bean parent="fieldSetLevelMapping" id="studentDataWSDTOFieldSetLevelMapping">
<property name="dtoClass"
value="de.hybris.platform.commercewebservicescommons.dto.Student.StudentDataWSDTO"/>
<property name="levelMapping">
<map>
<entry key="BASIC" value="studentId,studentName,studentPlace"/>
<entry key="DEFAULT" value="studentId,studentName"/>
<entry key="FULL" value="studentId,studentName,studentPlace,studentGuardian"/>
</map>
</property>
</bean>
INSERT_UPDATE OAuthClientDetails;clientId[Unique=true];resourceIds;scope;authorizedGrantTypes;clientSecret;authorities
;Student18;hybris;besic;authorization_code,refresh_token,password,client_credentials;Password11;ROLE_TRUSTED_CLIENT
If you have any query related to OCC then you can reach me out by commenting here.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.