content: package com.alibaba.excel.write.style;
  
  import com.alibaba.excel.constant.OrderConstant;
  import com.alibaba.excel.metadata.Head;
  import com.alibaba.excel.write.handler.CellWriteHandler;
  import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
  
  import org.apache.poi.ss.usermodel.Cell;
  
  /**
   * Cell style strategy
   *
   * @author Jiaju Zhuang
   */
  public abstract class AbstractCellStyleStrategy implements CellWriteHandler {
  
      @Override
      public int order() {
          return OrderConstant.DEFINE_STYLE;
      }
  
      @Override
      public void afterCellDispose(CellWriteHandlerContext context) {
          if (context.getHead() == null) {
              return;
          }
          if (context.getHead()) {
              setHeadCellStyle(context);
          } else {
              setContentCellStyle(context);
          }
      }
  
      /**
       * Sets the cell style of header
       *
       * @param context
       */
      protected void setHeadCellStyle(CellWriteHandlerContext context) {
          setHeadCellStyle(context.getCell(), context.getHeadData(), context.getRelativeRowIndex());
      }
  
      /**
       * Sets the cell style of header
       *
       * @param cell
       * @param head
       * @param relativeRowIndex
       */
      protected void setHeadCellStyle(Cell cell, Head head, Integer relativeRowIndex) {
          throw new UnsupportedOperationException("Custom styles must override the setHeadCellStyle method.");
      }
  
      /**
       * Sets the cell style of content
       *
       * @param context
       */
      protected void setContentCellStyle(CellWriteHandlerContext context) {
          setContentCellStyle(context.getCell(), context.getHeadData(), context.getRelativeRowIndex());
      }
  
      /**
       * Sets the cell style of content
       *
       * @param cell
       * @param head
       * @param relativeRowIndex
       */
      protected void setContentCellStyle(Cell cell, Head head, Integer relativeRowIndex) {
          throw new UnsupportedOperationException("Custom styles must override the setContentCellStyle method.");
      }
  
  }
  